Class: NodeQuery::Compiler::ExpressionList

Inherits:
Object
  • Object
show all
Defined in:
lib/node_query/compiler/expression_list.rb

Overview

ExpressionList contains one or more Expression.

Instance Method Summary collapse

Constructor Details

#initialize(expression:, rest: nil) ⇒ ExpressionList

Initialize an ExpressionList.

Parameters:



9
10
11
12
# File 'lib/node_query/compiler/expression_list.rb', line 9

def initialize(expression:, rest: nil)
  @expression = expression
  @rest = rest
end

Instance Method Details

#match_node?(node) ⇒ Boolean

Check if the node matches the expression list.

Parameters:

  • node (Node)

    the node

Returns:



31
32
33
# File 'lib/node_query/compiler/expression_list.rb', line 31

def match_node?(node)
  !query_nodes(node).empty?
end

#query_nodes(node, options = {}) ⇒ Array<Node>

Query nodes by the current and the rest expression.

Parameters:

  • node (Node)

    node to match

  • options (Hash) (defaults to: {})

    if query the current node

Options Hash (options):

  • :including_self (boolean)

    if query the current node, default is ture

  • :stop_at_first_match (boolean)

    if stop at first match, default is false

  • :recursive (boolean)

    if recursively query child nodes, default is true

Returns:

  • (Array<Node>)

    matching nodes.



21
22
23
24
25
26
# File 'lib/node_query/compiler/expression_list.rb', line 21

def query_nodes(node, options = {})
  matching_nodes = @expression.query_nodes(node, options)
  return matching_nodes if @rest.nil?

  matching_nodes + @rest.query_nodes(node, options)
end

#to_sObject



35
36
37
# File 'lib/node_query/compiler/expression_list.rb', line 35

def to_s
  [@expression, @rest].compact.join(', ')
end