Class OrderedHash
In: lib/facet/orderedhash.rb
Parent: Hash

Description

Hash with preserved order and some array-like extensions

Usage

Just require this file and use OrderedHash instead of Hash.

  require 'trix/orderedhash'

  # You can do simply
  hsh = OrderedHash.new
  hsh['z'] = 1
  hsh['a'] = 2
  hsh['c'] = 3
  p hsh.keys     #=> ['z','a','c']

  # or using OrderedHash[] method
  hsh = OrderedHash['z', 1, 'a', 2, 'c', 3]
  p hsh.keys     #=> ['z','a','c']

  # but this don't preserve order
  hsh = OrderedHash['z'=>1, 'a'=>2, 'c'=>3]
  p hsh.keys     #=> ['a','c','z']

  # OrderedHash 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

Author(s)

  • jan molic </mig/at/1984/dot/cz/>

Special Thanks

Andrew Johnson for his suggestions and fixes of Hash[], merge, to_a, inspect and shift.

Methods

==   []   []=   clear   delete   delete_if   each   each_key   each_pair   each_value   inspect   invert   keys   merge   merge!   new   pop   push   reject   reject!   replace   select   shift   store   store_only   to_a   to_s   unshift   update   values  

External Aliases

store -> orig_store

Attributes

order  [RW] 

Public Class methods

Public Instance methods

[]=(a,b)

Alias for store

each_pair()

Alias for each

merge!(hsh2)

Alias for update

[Validate]