Class: Yoda::Parsing::NodeObjects::SendNode

Inherits:
Object
  • Object
show all
Defined in:
lib/yoda/parsing/node_objects/send_node.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node) ⇒ SendNode

Returns a new instance of SendNode.

Parameters:

  • node (::Parser::AST::Node)


8
9
10
11
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 8

def initialize(node)
  fail ArgumentError, node unless node.is_a?(::Parser::AST::Node)
  @node = node
end

Instance Attribute Details

#nodeObject (readonly)

Returns the value of attribute node.



5
6
7
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 5

def node
  @node
end

Instance Method Details

#dot_rangeRange?

Returns:



45
46
47
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 45

def dot_range
  @dot_range ||= node.location.dot && Range.of_ast_location(node.location.dot)
end

#next_location_to_dotLocation?

Returns:



50
51
52
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 50

def next_location_to_dot
  node.location.dot && Range.of_ast_location(node.location.dot).end_location
end

#offset_in_selector(location) ⇒ Object

Returns Integer.

Parameters:

Returns:

  • Integer



66
67
68
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 66

def offset_in_selector(location)
  location.offset_from_begin(node.location.selector)[:column]
end

#on_dot?(location) ⇒ true, false

Parameters:

Returns:

  • (true, false)


20
21
22
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 20

def on_dot?(location)
  node.location.dot ? dot_range.include?(location) : false
end

#on_parameter?(location) ⇒ true, false

Parameters:

Returns:

  • (true, false)


26
27
28
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 26

def on_parameter?(location)
  parameter_range.include?(location)
end

#on_selector?(location) ⇒ true, false

Returns:

  • (true, false)


14
15
16
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 14

def on_selector?(location)
  node.location.selector ? selector_range.include?(location) : false
end

#parameter_rangeRange

Returns:



31
32
33
34
35
36
37
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 31

def parameter_range
  @parameter_range ||=
    Range.new(
      Location.of_ast_location(node.location.selector.end),
      Location.of_ast_location(node.location.expression.end).move(row: 0, column: -1),
    )
end

#receiver_nodeParser::AST::Node?

Returns:

  • (Parser::AST::Node, nil)


55
56
57
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 55

def receiver_node
  node && node.children[0]
end

#selector_nameString

Returns:

  • (String)


60
61
62
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 60

def selector_name
  node.children[1].to_s
end

#selector_rangeRange

Returns:



40
41
42
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 40

def selector_range
  @selector_range ||= Range.of_ast_location(node.location.selector)
end