Class: Yoda::Parsing::NodeObjects::SendNode
- Inherits:
-
Object
- Object
- Yoda::Parsing::NodeObjects::SendNode
- Defined in:
- lib/yoda/parsing/node_objects/send_node.rb
Instance Attribute Summary collapse
-
#node ⇒ Object
readonly
Returns the value of attribute node.
Instance Method Summary collapse
- #dot_range ⇒ Range?
-
#initialize(node) ⇒ SendNode
constructor
A new instance of SendNode.
- #next_location_to_dot ⇒ Location?
-
#offset_in_selector(location) ⇒ Object
Integer.
- #on_dot?(location) ⇒ true, false
- #on_parameter?(location) ⇒ true, false
- #on_selector?(location) ⇒ true, false
- #parameter_range ⇒ Range
- #receiver_node ⇒ Parser::AST::Node?
- #selector_name ⇒ String
- #selector_range ⇒ Range
Constructor Details
#initialize(node) ⇒ SendNode
Returns a new instance of SendNode.
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
#node ⇒ Object (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_range ⇒ Range?
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_dot ⇒ Location?
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.
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
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
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
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_range ⇒ Range
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_node ⇒ Parser::AST::Node?
55 56 57 |
# File 'lib/yoda/parsing/node_objects/send_node.rb', line 55 def receiver_node node && node.children[0] end |
#selector_name ⇒ 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_range ⇒ Range
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 |