class Qiita::Elasticsearch::Nodes::OrSeparatableNode
Public Class Methods
new(tokens)
click to toggle source
@param [Array<Qiita::Elasticsearch::Tokens>] tokens
# File lib/qiita/elasticsearch/nodes/or_separatable_node.rb, line 9 def initialize(tokens) @tokens = tokens end
Public Instance Methods
to_hash()
click to toggle source
# File lib/qiita/elasticsearch/nodes/or_separatable_node.rb, line 13 def to_hash case tokens_grouped_by_or_token.size when 0 Nodes::AnyNode.new.to_hash when 1 Nodes::FilterableNode.new(tokens_grouped_by_or_token.first).to_hash else { "bool" => { "should" => tokens_grouped_by_or_token.map do |tokens| Nodes::FilterableNode.new(tokens).to_hash end, }, } end end
Private Instance Methods
tokens_grouped_by_or_token()
click to toggle source
@return [Array<Array<Qiita::Elasticsearch::Token>>]
# File lib/qiita/elasticsearch/nodes/or_separatable_node.rb, line 33 def tokens_grouped_by_or_token @tokens_grouped_by_or_token ||= @tokens.select(&:query?).each_with_object([[]]) do |token, groups| if token.or? groups << [] else groups.last << token end end.reject(&:empty?) end