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