class SearchCopGrammar::Nodes::Collection

Attributes

nodes[R]

Public Class Methods

new(*nodes) click to toggle source
# File lib/search_cop_grammar/nodes.rb, line 131
def initialize(*nodes)
  @nodes = nodes.flatten
end

Public Instance Methods

can_flatten?() click to toggle source
# File lib/search_cop_grammar/nodes.rb, line 135
def can_flatten?
  nodes.any?(&:can_flatten?) || nodes.any? { |node| node.is_a?(self.class) || node.nodes.size == 1 }
end
can_group?() click to toggle source
# File lib/search_cop_grammar/nodes.rb, line 145
def can_group?
  nodes.reject(&:fulltext?).any?(&:can_group?) || nodes.select(&:fulltext?).group_by(&:collection).any? { |_, group| group.size > 1 }
end
finalize!() click to toggle source
# File lib/search_cop_grammar/nodes.rb, line 155
def finalize!
  @nodes = nodes.collect(&:finalize!)

  self
end
flatten!(&block) click to toggle source
# File lib/search_cop_grammar/nodes.rb, line 139
def flatten!(&block)
  @nodes = nodes.collect(&:flatten!).collect { |node| node.is_a?(self.class) || node.nodes.size == 1 ? node.nodes : node }.flatten

  self
end
group!() click to toggle source
# File lib/search_cop_grammar/nodes.rb, line 149
def group!
  @nodes = nodes.reject(&:fulltext?).collect(&:group!) + nodes.select(&:fulltext?).group_by(&:collection).collect { |collection, group| group.size > 1 ? self.class::Fulltext.new(collection, group) : group.first }

  self
end