Class: Yoda::Parsing::NodeObjects::MlhsNode

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node) ⇒ MlhsNode

Returns a new instance of MlhsNode.

Parameters:

  • node (::AST::Node)


9
10
11
12
# File 'lib/yoda/parsing/node_objects/mlhs_node.rb', line 9

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

Instance Attribute Details

#nodeObject (readonly)

Parameters:

  • node (::AST::Node)


6
7
8
# File 'lib/yoda/parsing/node_objects/mlhs_node.rb', line 6

def node
  @node
end

Instance Method Details

#post_nodesArray<::AST::Node>

Returns:

  • (Array<::AST::Node>)


25
26
27
# File 'lib/yoda/parsing/node_objects/mlhs_node.rb', line 25

def post_nodes
  @post_nodes ||= node.children.drop_while { |arg_node| %i(arg optarg mlhs).include?(arg_node.type) }.select { |arg_node| %i(arg optarg mlhs).include?(arg_node.type) }
end

#pre_nodesArray<::AST::Node>

Returns:

  • (Array<::AST::Node>)


15
16
17
# File 'lib/yoda/parsing/node_objects/mlhs_node.rb', line 15

def pre_nodes
  @pre_nodes ||= node.children.take_while { |arg_node| %i(arg optarg mlhs).include?(arg_node.type) }
end

#rest_node::AST::Node?

Returns:

  • (::AST::Node, nil)


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

def rest_node
  @rest_node ||= node.children.find { |arg_node| arg_node.type == :restarg }
end