Class: InsertOrderPreservingHash
- Inherits:
-
Hash
- Object
- Hash
- 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
- #values ⇒ Object
Constructor Details
#initialize(*args, &block) ⇒ InsertOrderPreservingHash
Returns a new instance of InsertOrderPreservingHash.
46 47 48 49 |
# File 'lib/json/ld/extensions.rb', line 46 def initialize(*args, &block) super @ordered_keys = [] end |
Instance Method Details
#[]=(key, val) ⇒ Object
51 52 53 54 |
# File 'lib/json/ld/extensions.rb', line 51 def []=(key, val) @ordered_keys << key unless has_key? key super end |
#clear ⇒ Object
77 78 79 80 |
# File 'lib/json/ld/extensions.rb', line 77 def clear @ordered_keys.clear super end |
#delete(k, &block) ⇒ Object
82 83 84 85 |
# File 'lib/json/ld/extensions.rb', line 82 def delete(k, &block) @ordered_keys.delete(k) super end |
#delete_if(&block) ⇒ Object
94 95 96 97 |
# File 'lib/json/ld/extensions.rb', line 94 def delete_if(&block) reject!(&block) self end |
#each ⇒ Object Also known as: each_pair
56 57 58 |
# File 'lib/json/ld/extensions.rb', line 56 def each @ordered_keys.each {|k| yield(k, super[k])} end |
#each_key ⇒ Object
65 66 67 |
# File 'lib/json/ld/extensions.rb', line 65 def each_key @ordered_keys.each {|k| yield k} end |
#each_value ⇒ Object
61 62 63 |
# File 'lib/json/ld/extensions.rb', line 61 def each_value @ordered_keys.each {|k| yield(super[k])} end |
#keys ⇒ Object
69 70 71 |
# File 'lib/json/ld/extensions.rb', line 69 def keys @ordered_keys end |
#merge(other) ⇒ Object
105 106 107 |
# File 'lib/json/ld/extensions.rb', line 105 def merge(other) self.dup.merge!(other) end |
#merge!(other) ⇒ Object
99 100 101 102 103 |
# File 'lib/json/ld/extensions.rb', line 99 def merge!(other) @ordered_keys += other.instance_variable_get(:@ordered_keys) || other.keys super self end |
#reject! ⇒ Object
87 88 89 90 91 92 |
# File 'lib/json/ld/extensions.rb', line 87 def reject! del = [] each_pair {|k,v| del << k if yield k,v} del.each {|k| delete k} del.empty? ? nil : self end |
#values ⇒ Object
73 74 75 |
# File 'lib/json/ld/extensions.rb', line 73 def values @ordered_keys.map {|k| super[k]} end |