class Elastic::Nodes::And

Public Class Methods

build(_children) click to toggle source
# File lib/elastic/nodes/and.rb, line 3
def self.build(_children)
  new.tap { |node| node.children = _children }
end

Public Instance Methods

add_child(_child) click to toggle source
# File lib/elastic/nodes/and.rb, line 7
def add_child(_child)
  @children << _child
end
children=(_value) click to toggle source
# File lib/elastic/nodes/and.rb, line 11
def children=(_value)
  @children = _value.dup.to_a
end
clone() click to toggle source
Calls superclass method
# File lib/elastic/nodes/and.rb, line 20
def clone
  prepare_clone super, @children.map(&:clone)
end
render(_options = {}) click to toggle source
# File lib/elastic/nodes/and.rb, line 30
def render(_options = {})
  { operation => @children.map { |c| c.render(_options) } }
end
simplify() click to toggle source
Calls superclass method
# File lib/elastic/nodes/and.rb, line 24
def simplify
  new_children = @children.map(&:simplify)
  return new_children.first if new_children.count == 1
  prepare_clone(super, new_children)
end
traverse(&_block) click to toggle source
Calls superclass method
# File lib/elastic/nodes/and.rb, line 15
def traverse(&_block)
  super
  @children.each { |c| c.traverse(&_block) }
end

Private Instance Methods

operation() click to toggle source
# File lib/elastic/nodes/and.rb, line 41
def operation
  'and'
end
prepare_clone(_clone, _children) click to toggle source
# File lib/elastic/nodes/and.rb, line 36
def prepare_clone(_clone, _children)
  _clone.children = _children
  _clone
end