Sha256: 76190da3a8a3f2c2d53895b82a9d0bc26d7ee7c93065bf8c74d87dc45fe29362
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
# encoding: utf-8 module Axiom # Abstract class for aggregate functions class Aggregate include AbstractType, Visitable, Operation::Unary include Equalizer.new(:operand) abstract_singleton_method :call abstract_method :type # Return the default accumulator # # @example # default = Aggregate.default # # @return [Object] # # @api public def self.default self::DEFAULT end # Returns the value extracted from the accumulator # # Default behaviour is to pass-through the accumulator # # @example # value = Aggregate.finalize(accumulator) # # @return [Object] # # @api public def self.finalize(accumulator) accumulator end # Return the default for this aggregate # # @example # default = aggregate.default # # @return [Object] # # @api public def default self.class.default end # Evaluate the aggregate using the provided Tuple # # @example # accumulator = aggregate.call(accumulator, tuple) # # @param [Object] accumulator # # @param [Tuple] tuple # # @return [Object] # # @api public def call(accumulator, tuple) self.class.call(accumulator, value(tuple)) end # Finalize the accumulator value # # @example # value = aggregate.finalize(accumulator) # # @return [Object] # # @api public def finalize(accumulator) self.class.finalize(accumulator) end private # Extract the value from the operand or tuple # # @param [Tuple] tuple # the tuple to pass in to the operand if it responds to #call # # @return [Object] # # @api private def value(tuple) Function.extract_value(operand, tuple) end end # class Aggregate end # module Axiom
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
axiom-0.1.0 | lib/axiom/aggregate.rb |