Module: NoBrainer::Criteria::Core

Extended by:
ActiveSupport::Concern
Defined in:
lib/no_brainer/criteria/core.rb

Defined Under Namespace

Modules: ClassMethods, MergeStrategies

Instance Method Summary collapse

Instance Method Details

#==(other) ⇒ Object



48
49
50
51
# File 'lib/no_brainer/criteria/core.rb', line 48

def ==(other)
  return to_a == other if other.is_a?(Array)
  super
end

#dupObject



17
18
19
20
# File 'lib/no_brainer/criteria/core.rb', line 17

def dup
  # We don't keep any of the instance variables except options.
  self.class.new(@options.dup)
end

#initialize(options = {}) ⇒ Object



13
14
15
# File 'lib/no_brainer/criteria/core.rb', line 13

def initialize(options={})
  @options = options
end

#inspectObject



30
31
32
33
# File 'lib/no_brainer/criteria/core.rb', line 30

def inspect
  # rescue super because sometimes model is not set.
  to_rql.inspect rescue super
end

#merge(criteria, options = {}) ⇒ Object



44
45
46
# File 'lib/no_brainer/criteria/core.rb', line 44

def merge(criteria, options={})
  dup.merge!(criteria, options)
end

#merge!(criteria, options = {}) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/no_brainer/criteria/core.rb', line 35

def merge!(criteria, options={})
  criteria.options.each do |k,v|
    merge_proc = self.class.options_definitions[k]
    raise "Non declared option: #{k}" unless merge_proc
    @options[k] = merge_proc.call(@options[k], v)
  end
  self
end

#modelObject



22
23
24
# File 'lib/no_brainer/criteria/core.rb', line 22

def model
  @options[:model]
end

#to_rqlObject



26
27
28
# File 'lib/no_brainer/criteria/core.rb', line 26

def to_rql
  finalized_criteria.__send__(:compile_rql_pass2)
end