class Github::CoreExt::OrderedHash
def ==(hsh2)
def ==(hsh2) return false if @order != hsh2.order super hsh2 end
def [](*args)
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
def []=(key, value)
def []=(key, value) @order.push key unless member?(key) super key, value end
def __class__
def __class__ OrderedHash end
def class
def class Hash end
def clear
def clear @order = [] super end
def delete(key)
def delete(key) @order.delete key super end
def delete_if
def delete_if @order.clone.each { |k| delete k if yield } self end
def each
def each @order.each { |k| yield k, self[k] } self end
def each_key
def each_key @order.each { |k| yield k } self end
def each_value
def each_value @order.each { |k| yield self[k] } self end
def initialize(*args, &block)
def initialize(*args, &block) super @order = [] end
def keys
def keys @order end
def replace(hsh2)
def replace(hsh2) @order = hsh2.keys super hsh2 end
def shift
def shift key = @order.first key ? [key, delete(key)] : super end
def values
def values ary = [] @order.each { |k| ary.push self[k] } ary end