class Gemologist::Gemfile::Dependency

Constants

METHOD_NAMES

Public Class Methods

method_names() click to toggle source
# File lib/gemologist/gemfile/dependency.rb, line 13
def self.method_names
  METHOD_NAMES
end

Public Instance Methods

groups() click to toggle source
# File lib/gemologist/gemfile/dependency.rb, line 17
def groups
  @groups ||= (groups_via_block + groups_via_option).map(&:to_sym)
end
options() click to toggle source
# File lib/gemologist/gemfile/dependency.rb, line 21
def options
  @options ||= symbolize_keys(AST.concretize(options_node) || {})
end

Private Instance Methods

group_node() click to toggle source
# File lib/gemologist/gemfile/dependency.rb, line 53
def group_node
  candidates = node.each_ancestor(:block).map { |block_node| block_node.children.first }

  candidates.find do |send_node|
    receiver_node, message, = *send_node
    receiver_node.nil? && message == :group
  end
end
groups_via_block() click to toggle source
# File lib/gemologist/gemfile/dependency.rb, line 27
def groups_via_block
  return [] unless group_node

  _receiver_node, _message, *arg_nodes = *group_node
  arg_nodes.map { |node| AST.concretize(node) }
end
groups_via_option() click to toggle source
# File lib/gemologist/gemfile/dependency.rb, line 34
def groups_via_option
  Array(options[:group])
end
options_node() click to toggle source
# File lib/gemologist/gemfile/dependency.rb, line 43
def options_node
  node = trailing_nodes.last

  if node&.hash_type?
    node
  else
    nil
  end
end
version_nodes() click to toggle source

github.com/bundler/bundler/blob/v1.7.11/lib/bundler/dsl.rb#L68-L70

# File lib/gemologist/gemfile/dependency.rb, line 39
def version_nodes
  @version_nodes ||= trailing_nodes - [options_node]
end