class Gammo::XPath::AST::Filter
@!visibility private
Attributes
expr[R]
predicates[R]
Public Class Methods
new(expr, predicates: [])
click to toggle source
# File lib/gammo/xpath/ast/path.rb, line 10 def initialize(expr, predicates: []) @expr = expr @predicates = predicates end
Public Instance Methods
evaluate(context)
click to toggle source
# File lib/gammo/xpath/ast/path.rb, line 15 def evaluate(context) value = expr.evaluate(context).to_node_set_value(context) node_set = value.to_node_set(context) predicates.each do |predicate| new_node_set = NodeSet.new node_set.each do |node| context.node = node context.position += 1 new_node_set << node if predicate.evaluate(context) end node_set.replace(new_node_set) end value end