Class: BB::Evaluator::Formula

Inherits:
Object
  • Object
show all
Defined in:
lib/b_b/evaluator/formula.rb

Constant Summary collapse

EVALUATE_TYPES =
%i(between contains equals gt gteq in is lt lteq match).freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value, options = {}) ⇒ Formula

Returns a new instance of Formula.



8
9
10
11
12
# File 'lib/b_b/evaluator/formula.rb', line 8

def initialize(value, options = {})
  @value    = value
  @operator = options[:operator]
  @negation = options[:negation]
end

Instance Attribute Details

#negationObject (readonly)

Returns the value of attribute negation.



6
7
8
# File 'lib/b_b/evaluator/formula.rb', line 6

def negation
  @negation
end

#operatorObject (readonly)

Returns the value of attribute operator.



6
7
8
# File 'lib/b_b/evaluator/formula.rb', line 6

def operator
  @operator
end

#valueObject (readonly)

Returns the value of attribute value.



6
7
8
# File 'lib/b_b/evaluator/formula.rb', line 6

def value
  @value
end

Class Method Details

.eval_type(value, options = {}) ⇒ Object



75
76
77
# File 'lib/b_b/evaluator/formula.rb', line 75

def eval_type(value, options = {})
  new(value, options).eval_type
end

Instance Method Details

#eval_typeObject



14
15
16
17
18
19
20
21
22
# File 'lib/b_b/evaluator/formula.rb', line 14

def eval_type
  evaluated_type = EVALUATE_TYPES.detect { |type| send("#{type}?") }

  if !evaluated_type.nil? && negative? && !double_negative?
    :"not_#{evaluated_type}"
  else
    evaluated_type
  end
end