class Gemologist::AbstractGemfile
Attributes
path[R]
Public Class Methods
new(path)
click to toggle source
# File lib/gemologist/abstract_gemfile.rb, line 11 def initialize(path) @path = path end
Public Instance Methods
dependencies()
click to toggle source
# File lib/gemologist/abstract_gemfile.rb, line 19 def dependencies @dependencies ||= ast.each_node.with_object([]) do |node, dependencies| next unless dependency_class.valid_node?(node) dependencies << dependency_class.new(node, source_rewriter) end end
find_dependency(name)
click to toggle source
# File lib/gemologist/abstract_gemfile.rb, line 15 def find_dependency(name) dependencies.find { |dep| dep.name == name } end
rewrite!()
click to toggle source
# File lib/gemologist/abstract_gemfile.rb, line 32 def rewrite! Gemologist::UI.deprecate("#{self.class.name}##{__method__}", replacement: '#save') save end
save()
click to toggle source
# File lib/gemologist/abstract_gemfile.rb, line 27 def save rewritten_source = source_rewriter.process File.write(path, rewritten_source) end
Private Instance Methods
ast()
click to toggle source
# File lib/gemologist/abstract_gemfile.rb, line 43 def ast @ast ||= begin builder = Astrolabe::Builder.new parser = Parser::CurrentRuby.new(builder) parser.parse(source_buffer) end end
dependency_class()
click to toggle source
# File lib/gemologist/abstract_gemfile.rb, line 39 def dependency_class raise NotImplementedError end
source_buffer()
click to toggle source
# File lib/gemologist/abstract_gemfile.rb, line 60 def source_buffer @source_buffer ||= Parser::Source::Buffer.new(path).read end
source_rewriter()
click to toggle source
# File lib/gemologist/abstract_gemfile.rb, line 51 def source_rewriter @source_rewriter ||= Parser::Source::TreeRewriter.new( source_buffer, crossing_deletions: :accept, different_replacements: :raise, swallowed_insertions: :raise ) end