Sha256: 8083dd1c40b48f14d7b496f19705df1399de2fad4b18b0d8243a0ce3614f1bbb

Contents?: true

Size: 553 Bytes

Versions: 1

Compression:

Stored size: 553 Bytes

Contents

class Tuple
  extend  Forwardable
  include Comparable

  def initialize(*values)
    @values = values.flatten.freeze
  end

  def self.[](*values)
    new(*values)
  end

  def <=>(other)
    return unless other.kind_of? self.class
    values <=> other.values
  end

  def invert
    Tuple(*values.reverse)
  end

  def_delegators :values,
                 :length,
                 :first,
                 :last,
                 :[]

  alias_method :arity, :length

  protected
  attr_reader :values
end

def Tuple(*values)
  Tuple.new(*values)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tuples-0.1.0 lib/tuples/tuple.rb