Class: Hashery::Association

### Home Classes Methods

### In Files

- lib/hashery/association.rb

### Parent

Object

### Namespace

- MODULE Hashery::Association::Kernel

### Methods

- ::[]
- ::new
- ::reference
- #<=>
- #inspect
- #invert!
- #to_ary
- #to_s

### Included Modules

- Comparable

### Files

- LICENSE.txt
- NOTICE.txt

### Class/Module Index

Quicksearch

- Hashery
- Hashery::Association
- Hashery::Association::Kernel
- Hashery::CRUDHash
- Hashery::CastingHash
- Hashery::Dictionary
- Hashery::FuzzyHash
- Hashery::IniHash
- Hashery::KeyHash
- Hashery::LRUHash
- Hashery::LinkedList
- Hashery::LinkedList::Node
- Hashery::OpenCascade
- Hashery::OpenHash
- Hashery::OrderedHash
- Hashery::PathHash
- Hashery::PropertyHash
- Hashery::QueryHash
- Hashery::Stash
- Hashery::StaticHash
- Hash

No matching classes.

# 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

index[RW]

The "index key" of the association.

value[RW]

The "value" of the association.

### Public Class Methods

[](index, value) click to toggle source

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

new(index, value=nil) click to toggle source

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

reference() click to toggle source

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

<=>(assoc) click to toggle source

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

inspect() click to toggle source

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!() click to toggle source

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

to_ary() click to toggle source

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

to_s() click to toggle source

Produce a string representation.

Returns [String].

    # File lib/hashery/association.rb, line 134
    def to_s
      return "#{index} >> #{value}"
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.