Class: InsertOrderPreservingHash
- Includes:
- Enumerable
- Defined in:
- lib/json/ld/extensions.rb
Instance Method Summary collapse
- #[]=(key, val) ⇒ Object
- #clear ⇒ Object
- #delete(k, &block) ⇒ Object
- #delete_if(&block) ⇒ Object
- #each ⇒ Object (also: #each_pair)
- #each_key ⇒ Object
- #each_value ⇒ Object
-
#initialize(*args, &block) ⇒ InsertOrderPreservingHash
constructor
A new instance of InsertOrderPreservingHash.
- #keys ⇒ Object
- #merge(other) ⇒ Object
- #merge!(other) ⇒ Object
- #reject! ⇒ Object
Methods inherited from Hash
Constructor Details
#initialize(*args, &block) ⇒ InsertOrderPreservingHash
Returns a new instance of InsertOrderPreservingHash.
69 70 71 72 |
# File 'lib/json/ld/extensions.rb', line 69 def initialize(*args, &block) super @ordered_keys = [] end |
Instance Method Details
#[]=(key, val) ⇒ Object
74 75 76 77 |
# File 'lib/json/ld/extensions.rb', line 74 def []=(key, val) @ordered_keys << key unless has_key? key super end |
#clear ⇒ Object
96 97 98 99 |
# File 'lib/json/ld/extensions.rb', line 96 def clear @ordered_keys.clear super end |
#delete(k, &block) ⇒ Object
101 102 103 104 |
# File 'lib/json/ld/extensions.rb', line 101 def delete(k, &block) @ordered_keys.delete(k) super end |
#delete_if(&block) ⇒ Object
113 114 115 116 |
# File 'lib/json/ld/extensions.rb', line 113 def delete_if(&block) reject!(&block) self end |
#each ⇒ Object Also known as: each_pair
79 80 81 |
# File 'lib/json/ld/extensions.rb', line 79 def each @ordered_keys.each {|k| yield(k, self[k])} end |
#each_key ⇒ Object
88 89 90 |
# File 'lib/json/ld/extensions.rb', line 88 def each_key @ordered_keys.each {|k| yield k} end |
#each_value ⇒ Object
84 85 86 |
# File 'lib/json/ld/extensions.rb', line 84 def each_value @ordered_keys.each {|k| yield(super[k])} end |
#keys ⇒ Object
92 93 94 |
# File 'lib/json/ld/extensions.rb', line 92 def keys @ordered_keys end |
#merge(other) ⇒ Object
126 127 128 |
# File 'lib/json/ld/extensions.rb', line 126 def merge(other) self.dup.merge!(other) end |
#merge!(other) ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/json/ld/extensions.rb', line 118 def merge!(other) new_keys = other.instance_variable_get(:@ordered_keys) || other.keys new_keys -= @ordered_keys @ordered_keys += new_keys super self end |
#reject! ⇒ Object
106 107 108 109 110 111 |
# File 'lib/json/ld/extensions.rb', line 106 def reject! del = [] each_pair {|k,v| del << k if yield k,v} del.each {|k| delete k} del.empty? ? nil : self end |