Skip to content

Instantly share code, notes, and snippets.

Created January 25, 2016 00:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/9977b09e3d9adfe8725a to your computer and use it in GitHub Desktop.
Save anonymous/9977b09e3d9adfe8725a to your computer and use it in GitHub Desktop.
class OHash
attr_reader :keys
def initialize(&default)
super()
@default = default
@keys = []
@hash = Hash.new(&default)
end
def[](key)
@hash.[](key)
end
def []=(key, val)
@keys << key
@hash.[]=(key,val)
end
def delete(key)
@keys.delete(key)
@hash.delete(key)
end
def each
@keys && @keys.each { |k| yield(k, @hash[k]) }
end
def each_key
@keys.each { |k| yield(k) }
end
def each_value
@keys.each { |k| yield @hash[k] }
end
def values()
@keys.map { |k| @hash[k] }
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment