class Kamaze::Project::Tools::Gemspec::Writer::Dependency
Describe dependency as an “Hash“ indexed by type
Sample of use:
“`ruby selector = lambda do |type|
Bundler.environment.dependencies .select { |d| d.groups.include?(type) }.to_a
end
dependency = Dependency.new
({
runtime: selector.call(:default), development: selector.call(:development),
})
puts dependency.keep(:runtime).to_s “`
Attributes
spec_name[R]
Public Class Methods
new(dependencies, spec_name = 's')
click to toggle source
@param [Hash<Symbol, Gem::Dependency>] dependencies @param [String] spec_name
# File lib/kamaze/project/tools/gemspec/writer/dependency.rb, line 31 def initialize(dependencies, spec_name = 's') @dependencies = dependencies.to_h.freeze @spec_name = spec_name.to_s @keep = [:runtime, :development] end
Public Instance Methods
keep(*keep)
click to toggle source
@return [self]
# File lib/kamaze/project/tools/gemspec/writer/dependency.rb, line 38 def keep(*keep) @keep = keep self end
to_a()
click to toggle source
Get dependencies array representation.
@return [Array<Gem::Dependency>]
# File lib/kamaze/project/tools/gemspec/writer/dependency.rb, line 76 def to_a out = [] @dependencies.each do |type, gems| next unless @keep.include?(type) out.concat(gems) end out end
to_h()
click to toggle source
Get dependencies hash representation.
@return [Hash<Symbol, Gem::Dependency>]
# File lib/kamaze/project/tools/gemspec/writer/dependency.rb, line 47 def to_h out = {} @dependencies.each do |type, gems| next unless @keep.include?(type) out[type] = Array.new(gems.clone) end out end
to_s()
click to toggle source
Get dependencies string representation.
@return [String]
# File lib/kamaze/project/tools/gemspec/writer/dependency.rb, line 61 def to_s lines = [] self.to_h.each do |type, gems| gems.each do |gem| lines << make_spec_line(gem, type) end end lines.join("\n").rstrip end
Protected Instance Methods
make_spec_line(gem, type)
click to toggle source
@param [Bundler::Dependency] gem @param [String|Symbol] type @return [String]
# File lib/kamaze/project/tools/gemspec/writer/dependency.rb, line 95 def make_spec_line(gem, type) '%<spacer>s%<spec_name>s.%<method>s("%<gem>s", %<requirements>s)' % { spacer: "\s" * 2, spec_name: spec_name, method: "add_#{type}_dependency", gem: gem.name, requirements: gem.requirements_list } end