Module: GemfileInterpreter::Parser
- Defined in:
- lib/gemfile_interpreter/parser.rb
Class Method Summary collapse
- .parse(gems, dependencies) ⇒ Object
- .parse_gem(gem, dependencies) ⇒ Object
- .parse_source(source) ⇒ Object
Class Method Details
.parse(gems, dependencies) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/gemfile_interpreter/parser.rb', line 6 def parse gems, dependencies hash = {} gems.each do |gem| hash[gem.name] = parse_gem gem, dependencies end hash end |
.parse_gem(gem, dependencies) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/gemfile_interpreter/parser.rb', line 14 def parse_gem gem, dependencies hash = {} [:version, :full_name, :platform, :remote].map do |method| hash[method.to_s] = gem.send(method).to_s end hash['source'] = parse_source gem.source hash['in_gemfile'] = dependencies.any? {|d| d.name == gem.name } hash end |
.parse_source(source) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/gemfile_interpreter/parser.rb', line 24 def parse_source source source_type = if source.is_a? Bundler::Source::Rubygems 'rubygems' elsif source.is_a? Bundler::Source::Git 'git' elsif source.is_a? Bundler::Source::Path raise NotImplementedError, "A gem from a local path is currently not supported" else raise "unknown type #{source.inspect}" end {'type' => source_type}.merge(source.) end |