Sha256: 3e71341b5ba6ecfcd0a5e64a5d2d5d11d822cd64abaccfdf3412ca9d6f0036e1
Contents?: true
Size: 1.28 KB
Versions: 3
Compression:
Stored size: 1.28 KB
Contents
module Veritas module Evaluator # Provide a context to evaluate a Relation operation block class Expression include Immutable # The expressions to evaluate # # @return [Hash] # # @api private attr_reader :expressions # Initialize an Expression # # @return [undefined] # # @api private def initialize @expressions = {} yield self @expressions.freeze end # Add an expression to be evaluated by the relation operation # # @example of a function # evaluator.add(:total, evaluator[:unit_price] * evaluator[:quantity]) # # @example of a block # evaluator.add(:total) { |t| t[:unit_price] * t[:quantity] } } # # @param [Attribute, #to_ary, #to_sym] attribute # the attribute to add to the header # @param [#call] expression # optional function # # @yield [] # optional block to execute in the relation operation # # @return [self] # # @api public def add(attribute, expression = nil, &block) expressions[Attribute.coerce(attribute)] = expression || block self end end # class FunctionExpression end # module Evaluator end # module Veritas
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
veritas-0.0.3 | lib/veritas/support/evaluator.rb |
veritas-0.0.2 | lib/veritas/support/evaluator.rb |
veritas-0.0.1 | lib/veritas/support/evaluator.rb |