Class | Hashery::Dictionary |
In: |
lib/hashery/dictionary.rb
|
Parent: | Object |
The Dictionary class is a Hash that preserves order. So it has some array-like extensions also. By defualt a Dictionary object preserves insertion order, but any order can be specified including alphabetical key order.
Using a Dictionary is almost the same as using a Hash.
# You can do simply hsh = Dictionary.new hsh['z'] = 1 hsh['a'] = 2 hsh['c'] = 3 p hsh.keys #=> ['z','a','c'] # or using Dictionary[] method hsh = Dictionary['z', 1, 'a', 2, 'c', 3] p hsh.keys #=> ['z','a','c'] # but this don't preserve order hsh = Dictionary['z'=>1, 'a'=>2, 'c'=>3] p hsh.keys #=> ['a','c','z'] # Dictionary has useful extensions: push, pop and unshift p hsh.push('to_end', 15) #=> true, key added p hsh.push('to_end', 30) #=> false, already - nothing happen p hsh.unshift('to_begin', 50) #=> true, key added p hsh.unshift('to_begin', 60) #=> false, already - nothing happen p hsh.keys #=> ["to_begin", "a", "c", "z", "to_end"] p hsh.pop #=> ["to_end", 15], if nothing remains, return nil p hsh.keys #=> ["to_begin", "a", "c", "z"] p hsh.shift #=> ["to_begin", 30], if nothing remains, return nil
Dictionary is a port of OrderHash 2.0 Copyright (c) 2005 Jan Molic.
People who have contributed to this class since then include:
OrderedHash is public domain.
alphabetic | -> | alpha |
DEPRECATED: Use alphabetic instead. |
Create a new Dictionary storing argument pairs as an initial mapping.
TODO: Is this needed? Doesn‘t the super class do this?
Returns Dictionary instance.
Alternate to new which creates a dictionary sorted by the key as a string.
d = Dictionary.alphabetic d["z"] = 1 d["y"] = 2 d["x"] = 3 d #=> {"x"=>3,"y"=>2,"z"=>2}
This is equivalent to:
Dictionary.new.order_by { |key,value| key.to_s }
Insert entry into dictionary at specific index position.
index - [Integer] Position of order placement. key - [Object] Key to associate with value. value - [Object] Value to associate with key.
Returns `value` stored.
Invert the dictionary.
Returns [Dictionary] New dictionary that is inverse of the original.
Keep dictionary sorted by key.
d = Dictionary.new.order_by_key d["z"] = 1 d["y"] = 2 d["x"] = 3 d #=> {"x"=>3,"y"=>2,"z"=>2}
This is equivalent to:
Dictionary.new.order_by { |key,value| key }
The initializer Dictionary#alpha also provides this.
Returns self.
Keep dictionary sorted by value.
d = Dictionary.new.order_by_value d["z"] = 1 d["y"] = 2 d["x"] = 3 d #=> {"x"=>3,"y"=>2,"z"=>2}
This is equivalent to:
Dictionary.new.order_by { |key,value| value }
Reject entries based on give condition block and return new dictionary.
Returns [Dictionary].
Reject entries based on give condition block.
Returns [Hash] of rejected entries.
FIXME: This looks like it is implemented wrong!!!