class Qiita::Elasticsearch::Nodes::FilterableNode

Public Class Methods

new(tokens) click to toggle source

@param [Array<Qiita::Elasticsearch::Tokens>] tokens

# File lib/qiita/elasticsearch/nodes/filterable_node.rb, line 9
def initialize(tokens)
  @tokens = tokens
end

Public Instance Methods

to_hash() click to toggle source
# File lib/qiita/elasticsearch/nodes/filterable_node.rb, line 13
def to_hash
  if filter_tokens.empty?
    QueryNode.new(not_filter_tokens).to_hash
  else
    {
      "filtered" => {
        "filter" => FilterNode.new(filter_tokens).to_hash,
        "query" => QueryNode.new(not_filter_tokens).to_hash,
      }.reject do |key, value|
        value.empty?
      end,
    }
  end
end

Private Instance Methods

filter_tokens() click to toggle source
# File lib/qiita/elasticsearch/nodes/filterable_node.rb, line 30
def filter_tokens
  @filter_tokens ||= @tokens.select(&:filter?)
end
not_filter_tokens() click to toggle source
# File lib/qiita/elasticsearch/nodes/filterable_node.rb, line 34
def not_filter_tokens
  @not_filter_tokens ||= @tokens.reject(&:filter?)
end