class JMESPath::Nodes::Pipe

Attributes

left[R]
right[R]

Public Class Methods

new(left, right) click to toggle source
# File lib/jmespath/nodes/subexpression.rb, line 5
def initialize(left, right)
  @left = left
  @right = right
end

Public Instance Methods

optimize() click to toggle source
# File lib/jmespath/nodes/subexpression.rb, line 14
def optimize
  Chain.new(flatten).optimize
end
visit(value) click to toggle source
# File lib/jmespath/nodes/subexpression.rb, line 10
def visit(value)
  @right.visit(@left.visit(value))
end

Protected Instance Methods

flatten() click to toggle source
# File lib/jmespath/nodes/subexpression.rb, line 22
def flatten
  nodes = [@left, @right]
  until nodes.none? { |node| node.is_a?(Subexpression) }
    nodes = nodes.flat_map do |node|
      if node.is_a?(Subexpression)
        [node.left, node.right]
      else
        [node]
      end
    end
  end
  nodes.map(&:optimize)
end