Class: Safedep::AbstractDependency

Inherits:
Object
  • Object
show all
Defined in:
lib/safedep/abstract_dependency.rb

Direct Known Subclasses

Gemfile::Dependency, Gemspec::Dependency

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node, rewriter) ⇒ AbstractDependency

Returns a new instance of AbstractDependency.



17
18
19
20
21
# File 'lib/safedep/abstract_dependency.rb', line 17

def initialize(node, rewriter)
  fail 'Invalid node.' unless self.class.valid_node?(node)
  @node = node
  @rewriter = rewriter
end

Instance Attribute Details

#nodeObject (readonly)

Returns the value of attribute node.



5
6
7
# File 'lib/safedep/abstract_dependency.rb', line 5

def node
  @node
end

#rewriterObject (readonly)

Returns the value of attribute rewriter.



5
6
7
# File 'lib/safedep/abstract_dependency.rb', line 5

def rewriter
  @rewriter
end

Class Method Details

.method_namesObject



13
14
15
# File 'lib/safedep/abstract_dependency.rb', line 13

def self.method_names
  fail NotImplementedError
end

.valid_node?(node) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
10
11
# File 'lib/safedep/abstract_dependency.rb', line 7

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

Instance Method Details

#groupsObject



27
28
29
# File 'lib/safedep/abstract_dependency.rb', line 27

def groups
  fail NotImplementedError
end

#nameObject



23
24
25
# File 'lib/safedep/abstract_dependency.rb', line 23

def name
  name_node.children.first
end

#optionsObject



45
46
47
# File 'lib/safedep/abstract_dependency.rb', line 45

def options
  {}
end

#version_specifiersObject



31
32
33
# File 'lib/safedep/abstract_dependency.rb', line 31

def version_specifiers
  @version_specifiers ||= version_nodes.map { |node| Literal.value(node) }.flatten
end

#version_specifiers=(*specifiers) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/safedep/abstract_dependency.rb', line 35

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