Class: Rinda::Tuple

Inherits:
Object
  • Object
show all
Defined in:
lib/rinda/rinda.rb

Overview

A tuple is the elementary object in Rinda programming. Tuples may be matched against templates if the tuple and the template are the same size.

Direct Known Subclasses

Template

Instance Method Summary collapse

Constructor Details

#initialize(ary_or_hash) ⇒ Tuple

Creates a new Tuple from ary_or_hash which must be an Array or Hash.



51
52
53
54
55
56
57
# File 'lib/rinda/rinda.rb', line 51

def initialize(ary_or_hash)
  if hash?(ary_or_hash)
    init_with_hash(ary_or_hash)
  else
    init_with_ary(ary_or_hash)
  end
end

Instance Method Details

#[](k) ⇒ Object

Accessor method for elements of the tuple.



69
70
71
# File 'lib/rinda/rinda.rb', line 69

def [](k)
  @tuple[k]
end

#eachObject

Iterate through the tuple, yielding the index or key, and the value, thus ensuring arrays are iterated similarly to hashes.



84
85
86
87
88
89
90
# File 'lib/rinda/rinda.rb', line 84

def each # FIXME
  if Hash === @tuple
    @tuple.each { |k, v| yield(k, v) }
  else
    @tuple.each_with_index { |v, k| yield(k, v) }
  end
end

#fetch(k) ⇒ Object

Fetches item k from the tuple.



76
77
78
# File 'lib/rinda/rinda.rb', line 76

def fetch(k)
  @tuple.fetch(k)
end

#sizeObject

The number of elements in the tuple.



62
63
64
# File 'lib/rinda/rinda.rb', line 62

def size
  @tuple.size
end

#valueObject

Return the tuple itself



94
95
96
# File 'lib/rinda/rinda.rb', line 94

def value
  @tuple
end