Sha256: f7f0f6851440bb6081d8cb6f6499c1e2de2283e15c158954d3a9520214f0223c

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

# encoding: utf-8

module Axiom
  class Aggregate

    # The maximum value in a sequence of numbers
    class Minimum < Aggregate

      DEFAULT = Float::INFINITY

      # Return the minimum value for a sequence of numbers
      #
      # @example
      #   minimum = Minimum.call(minimum, value)
      #
      # @param [Numeric] minimum
      #
      # @param [Numeric] value
      #
      # @return [Numeric]
      #
      # @api public
      def self.call(minimum, value)
        return minimum if value.nil?
        value < minimum ? value : minimum
      end

      # Return the type returned from #call
      #
      # @example
      #   type = Axiom::Aggregate::Minimum.type
      #
      # @return [Class<Attribute::Numeric>]
      #
      # @api public
      def type
        Attribute.infer_type(operand)
      end

      module Methods
        extend Aliasable

        inheritable_alias(:min => :minimum)

        # Return a minimum aggregate function
        #
        # @example
        #   minimum = attribute.minimum
        #
        # @param [Attribute]
        #
        # @return [Minimum]
        #
        # @api public
        def minimum
          Minimum.new(self)
        end

      end # module Methods
    end # class Minimum
  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/minimum.rb