Sha256: 699c599cc4949f363e14598942a64a1e781499c934e3dbba99bb3b13f656e33e

Contents?: true

Size: 832 Bytes

Versions: 1

Compression:

Stored size: 832 Bytes

Contents

module Elastic::Nodes
  class And < Base
    def self.build(_children)
      new.tap { |node| node.children = _children }
    end

    def add_child(_child)
      @children << _child
    end

    def children=(_value)
      @children = _value.dup.to_a
    end

    def traverse(&_block)
      super
      @children.each { |c| c.traverse(&_block) }
    end

    def clone
      prepare_clone super, @children.map(&:clone)
    end

    def simplify
      new_children = @children.map(&:simplify)
      return new_children.first if new_children.count == 1
      prepare_clone(super, new_children)
    end

    def render
      { operation => @children.map(&:render) }
    end

    private

    def prepare_clone(_clone, _children)
      _clone.children = _children
      _clone
    end

    def operation
      'and'
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
elastic-rails-0.5.0 lib/elastic/nodes/and.rb