class Hashery::Association
Association
is a general binary association that allows one object to be associated with another. It has a variety of uses, such as linked-lists, simple ordered maps and mixed collections, among them.
NOTE: This class is still fairly experimental. And it is not loaded along with the other Hashery
libraries when using `require 'hashery'`. It must be required independently.
Associations can be used to draw simple relationships.
:Apple >> :Fruit :Apple >> :Red :Apple.associations #=> [ :Fruit, :Red ]
It can also be used for simple lists of ordered pairs.
c = [ :a >> 1, :b >> 2 ] c.each { |k,v| puts "#{k} associated with #{v} }
produces
a associated with 1 b associated with 2
The method :>> is used to construct the association. It is a rarely used method so it is generally available. But you can't use it for any of the following classes becuase they use >> for other things.
Bignum Fixnum Date IPAddr Process::Status
Attributes
The “index key” of the association.
The “value” of the association.
Public Class Methods
Shortcut for new.
index - The “index key” of the association. value - The “value” of the association.
Returns `Association`.
# File lib/hashery/association.rb, line 65 def [](index, value) new(index, value) end
Initialize new Association
.
index - The “index key” of the association. value - The “value” of the association.
# File lib/hashery/association.rb, line 94 def initialize(index, value=nil) @index = index @value = value unless index.associations.include?(value) index.associations << value end end
Store association references.
Returns `Hash` of all associaitons.
# File lib/hashery/association.rb, line 53 def reference @reference ||= Hash.new{ |h,k,v| h[k]=[] } end
Public Instance Methods
Compare the values of two associations.
TODO: Comparions with non-associations?
assoc - The other `Association`.
Returns [Integer] `1`, `0`, or `-1`.
# File lib/hashery/association.rb, line 112 def <=>(assoc) return -1 if self.value < assoc.value return 1 if self.value > assoc.value return 0 if self.value == assoc.value end
Produce a literal code string for creating an association.
Returns [String].
# File lib/hashery/association.rb, line 143 def inspect "#{index.inspect} >> #{value.inspect}" end
Invert association, making the index the value and vice-versa.
Returns [Array] with two-elements reversed.
# File lib/hashery/association.rb, line 123 def invert! temp = @index @index = @value @value = temp end
Convert to two-element associative array.
Returns [Array] Two-element Array of index and value pair.
# File lib/hashery/association.rb, line 152 def to_ary [index, value] end
Produce a string representation.
Returns [String].
# File lib/hashery/association.rb, line 134 def to_s return "#{index} >> #{value}" end