Class: Optimus::Transformers::ColumnCalculator::Evaluatable

Inherits:
Object
  • Object
show all
Defined in:
lib/transformers/column_calculator.rb

Overview

class ComputedColumn

Instance Method Summary collapse

Constructor Details

#initialize(target, parser = nil) ⇒ Evaluatable

Returns a new instance of Evaluatable.



151
152
153
154
155
156
157
# File 'lib/transformers/column_calculator.rb', line 151

def initialize(target, parser = nil)
  if target.is_a? String
    @target = parser.parse(target)
  else
    @target = target
  end
end

Instance Method Details

#bool_eval(*args) ⇒ Object



178
179
180
181
182
# File 'lib/transformers/column_calculator.rb', line 178

def bool_eval(*args)
  val = self.evaluate(*args)
  return false if val == ''
  return val
end

#evaluate(*args) ⇒ Object



159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/transformers/column_calculator.rb', line 159

def evaluate(*args)
  # Check for magicality
  if @target == :once
    @target = false
    return true
  end
  # If we don't have a call method or an evaluate method, just
  # this as our own default method.
  if not [:call, :evaluate].any? {|msg| @target.respond_to? msg}
    return @target
  end
  if @target.respond_to? :call
    row = (args.last || {})[:row] || []
    return @target.call(row)
  else
    return @target.evaluate(*args)
  end
end