class Assembla::CoreExt::OrderedHash

Attributes

order[RW]

Public Class Methods

[](*args) click to toggle source
# File lib/assembla_api/core_ext/ordered_hash.rb, line 13
def [](*args)
  hsh = OrderedHash.new
  if Hash == args[0]
    hsh.replace args[0]
  elsif (args.size % 2) != 0
    pp args
    raise ArgumentError, "odd number of elements for Hash"
  else
    0.step(args.size - 1, 2) do |a|
      b = a + 1
      hsh[args[a]] = args[b]
    end
  end
  hsh
end
new(*args, &block) click to toggle source
Calls superclass method
# File lib/assembla_api/core_ext/ordered_hash.rb, line 30
def initialize(*args, &block)
  super
  @order = []
end

Public Instance Methods

==(hsh2) click to toggle source
Calls superclass method
# File lib/assembla_api/core_ext/ordered_hash.rb, line 40
def ==(hsh2)
  return false if @order != hsh2.order
  super hsh2
end
[]=(key, value) click to toggle source
Calls superclass method
# File lib/assembla_api/core_ext/ordered_hash.rb, line 35
def []=(key, value)
  @order.push key unless member?(key)
  super key, value
end
__class__() click to toggle source
# File lib/assembla_api/core_ext/ordered_hash.rb, line 100
def __class__
  OrderedHash
end
class() click to toggle source
# File lib/assembla_api/core_ext/ordered_hash.rb, line 96
def class
  Hash
end
clear() click to toggle source
Calls superclass method
# File lib/assembla_api/core_ext/ordered_hash.rb, line 45
def clear
  @order = []
  super
end
delete(key) click to toggle source
Calls superclass method
# File lib/assembla_api/core_ext/ordered_hash.rb, line 50
def delete(key)
  @order.delete key
  super
end
delete_if() { || ... } click to toggle source
# File lib/assembla_api/core_ext/ordered_hash.rb, line 71
def delete_if
  @order.clone.each { |k| delete k if yield }
  self
end
each() { |k, self| ... } click to toggle source
# File lib/assembla_api/core_ext/ordered_hash.rb, line 65
def each
  @order.each { |k| yield k, self[k] }
  self
end
Also aliased as: each_pair
each_key() { |k| ... } click to toggle source
# File lib/assembla_api/core_ext/ordered_hash.rb, line 55
def each_key
  @order.each { |k| yield k }
  self
end
each_pair()
Alias for: each
each_value() { |self| ... } click to toggle source
# File lib/assembla_api/core_ext/ordered_hash.rb, line 60
def each_value
  @order.each { |k| yield self[k] }
  self
end
keys() click to toggle source
# File lib/assembla_api/core_ext/ordered_hash.rb, line 82
def keys
  @order
end
replace(hsh2) click to toggle source
Calls superclass method
# File lib/assembla_api/core_ext/ordered_hash.rb, line 86
def replace(hsh2)
  @order = hsh2.keys
  super hsh2
end
shift() click to toggle source
Calls superclass method
# File lib/assembla_api/core_ext/ordered_hash.rb, line 91
def shift
  key = @order.first
  key ? [key, delete(key)] : super
end
values() click to toggle source
# File lib/assembla_api/core_ext/ordered_hash.rb, line 76
def values
  ary = []
  @order.each { |k| ary.push self[k] }
  ary
end