module GemfileInterpreter::Parser
Public Class Methods
parse(gems, dependencies)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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.options) end