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.
97 98 99 100 |
# File 'lib/json/ld/extensions.rb', line 97 def initialize(*args, &block) super @ordered_keys = [] end |
Instance Method Details
#[]=(key, val) ⇒ Object
102 103 104 105 |
# File 'lib/json/ld/extensions.rb', line 102 def []=(key, val) @ordered_keys << key unless has_key? key super end |
#clear ⇒ Object
124 125 126 127 |
# File 'lib/json/ld/extensions.rb', line 124 def clear @ordered_keys.clear super end |
#delete(k, &block) ⇒ Object
129 130 131 132 |
# File 'lib/json/ld/extensions.rb', line 129 def delete(k, &block) @ordered_keys.delete(k) super end |
#delete_if(&block) ⇒ Object
141 142 143 144 |
# File 'lib/json/ld/extensions.rb', line 141 def delete_if(&block) reject!(&block) self end |
#each ⇒ Object Also known as: each_pair
107 108 109 |
# File 'lib/json/ld/extensions.rb', line 107 def each @ordered_keys.each {|k| yield(k, self[k])} end |
#each_key ⇒ Object
116 117 118 |
# File 'lib/json/ld/extensions.rb', line 116 def each_key @ordered_keys.each {|k| yield k} end |
#each_value ⇒ Object
112 113 114 |
# File 'lib/json/ld/extensions.rb', line 112 def each_value @ordered_keys.each {|k| yield(super[k])} end |
#keys ⇒ Object
120 121 122 |
# File 'lib/json/ld/extensions.rb', line 120 def keys @ordered_keys end |
#merge(other) ⇒ Object
154 155 156 |
# File 'lib/json/ld/extensions.rb', line 154 def merge(other) self.dup.merge!(other) end |
#merge!(other) ⇒ Object
146 147 148 149 150 151 152 |
# File 'lib/json/ld/extensions.rb', line 146 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
134 135 136 137 138 139 |
# File 'lib/json/ld/extensions.rb', line 134 def reject! del = [] each_pair {|k,v| del << k if yield k,v} del.each {|k| delete k} del.empty? ? nil : self end |