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.


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

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.


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

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.


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

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.


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

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

#sizeObject

The number of elements in the tuple.


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

def size
  @tuple.size
end

#valueObject

Return the tuple itself


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

def value
  @tuple
end