Sha256: f63bb647d78e3042c7b28ff45f81be406418abdb4055889d5a65668ee76945e8

Contents?: true

Size: 853 Bytes

Versions: 1

Compression:

Stored size: 853 Bytes

Contents

# frozen_string_literal: true

module TTFunk
  # Maximum aggregate. Its value can only become greater.
  class Max < Aggregate
    # Value
    #
    # @return [Comparable, nil]
    attr_reader :value

    # @param init_value [Comparable] initial value
    def initialize(init_value = nil)
      super()
      @value = init_value
    end

    # Push a value. It will become the new value if it's greater than the
    # current value (or if there was no value).
    #
    # @param new_value [Comparable]
    # @return [void]
    def <<(new_value)
      new_value = coerce(new_value)

      if value.nil? || new_value > value
        @value = new_value
      end
    end

    # Get the stored value or default.
    #
    # @param default [any]
    # @return [any]
    def value_or(default)
      return default if value.nil?

      value
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ttfunk-1.8.0 lib/ttfunk/max.rb