class JMESPath::Nodes::Chain
def initialize(children)
def initialize(children) @children = children end
def optimize
def optimize children = @children.map(&:optimize) index = 0 while index < children.size - 1 if children[index].chains_with?(children[index + 1]) children[index] = children[index].chain(children[index + 1]) children.delete_at(index + 1) else index += 1 end end Chain.new(children) end
def visit(value)
def visit(value) @children.reduce(value) do |v, child| child.visit(v) end end