class Gemologist::AbstractDependency

Attributes

node[R]
rewriter[R]

Public Class Methods

method_names() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 16
def self.method_names
  raise NotImplementedError
end
new(node, rewriter) click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 20
def initialize(node, rewriter)
  raise 'Invalid node.' unless self.class.valid_node?(node)

  @node = node
  @rewriter = rewriter
end
valid_node?(node) click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 9
def self.valid_node?(node)
  return false unless node.send_type?

  _receiver_node, message, name_node, = *node
  method_names.include?(message) && name_node.str_type?
end

Public Instance Methods

groups() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 31
def groups
  raise NotImplementedError
end
name() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 27
def name
  name_node.children.first
end
options() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 49
def options
  {}
end
version_specifiers() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 35
def version_specifiers
  @version_specifiers ||= version_nodes.map { |node| AST.concretize(node) }.flatten
end
version_specifiers=(*specifiers) click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 39
def version_specifiers=(*specifiers)
  source = specifiers.flatten.map { |specifier| "'#{specifier}'" }.join(', ')

  if version_nodes.empty?
    rewriter.insert_after(name_node.loc.expression, ", #{source}")
  else
    rewriter.replace(version_range, source)
  end
end

Private Instance Methods

method_name() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 55
def method_name
  node.children[1]
end
name_node() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 59
def name_node
  node.children[2]
end
trailing_nodes() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 63
def trailing_nodes
  node.children[3..-1]
end
version_nodes() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 67
def version_nodes
  raise NotImplementedError
end
version_range() click to toggle source
# File lib/gemologist/abstract_dependency.rb, line 71
def version_range
  version_nodes.first.loc.expression.join(version_nodes.last.loc.expression)
end