class Sparkql::ExpressionState
Custom fields need to add a table join to the customfieldsearch table when AND'd together, but not when they are OR'd or nested. This class maintains the state for all custom field expressions lets the parser know when to do either.
Public Class Methods
new()
click to toggle source
# File lib/sparkql/expression_state.rb, line 6 def initialize @expressions = {0=>[]} @last_conjunction = "And" # always start with a join @block_group = 0 end
Public Instance Methods
needs_join?()
click to toggle source
# File lib/sparkql/expression_state.rb, line 19 def needs_join? return @expressions[@block_group].size == 1 || ["Not", "And"].include?(@last_conjunction) end
push(expression)
click to toggle source
# File lib/sparkql/expression_state.rb, line 12 def push(expression) @block_group = expression[:block_group] @expressions[@block_group] ||= [] @expressions[@block_group] << expression @last_conjunction = expression[:conjunction] end