Module: OrderedHash
- Included in:
- OHash
- Defined in:
- lib/ordered_hash.rb
Instance Method Summary collapse
- #==(hsh2) ⇒ Object
- #[]=(a, b) ⇒ Object
- #clear ⇒ Object
- #delete(key) ⇒ Object
- #delete_if ⇒ Object
- #each ⇒ Object (also: #each_pair)
- #each_key ⇒ Object
- #each_value ⇒ Object
- #inspect ⇒ Object
- #invert ⇒ Object
- #keys ⇒ Object
- #merge(hsh2) ⇒ Object
- #merge!(hsh2) ⇒ Object
- #ordered? ⇒ Boolean
- #pretty_print(q) ⇒ Object
- #pretty_print_cycle(q) ⇒ Object
- #reject(&block) ⇒ Object
- #reject!(&block) ⇒ Object
- #replace(hsh2) ⇒ Object
- #select ⇒ Object
- #shift ⇒ Object
- #store(a, b) ⇒ Object
- #to_a ⇒ Object
- #to_s ⇒ Object
- #update(hsh2) ⇒ Object
- #values ⇒ Object
Instance Method Details
#==(hsh2) ⇒ Object
36 37 38 39 |
# File 'lib/ordered_hash.rb', line 36 def == ( hsh2 ) return false if !hsh2.respond_to? :order or @order != hsh2.order super hsh2 end |
#[]=(a, b) ⇒ Object
31 32 33 34 |
# File 'lib/ordered_hash.rb', line 31 def []= ( a, b ) @order.push a unless has_key? a super a,b end |
#clear ⇒ Object
41 42 43 44 |
# File 'lib/ordered_hash.rb', line 41 def clear @order = [] super end |
#delete(key) ⇒ Object
46 47 48 49 |
# File 'lib/ordered_hash.rb', line 46 def delete ( key ) @order.delete key super end |
#delete_if ⇒ Object
68 69 70 71 72 73 |
# File 'lib/ordered_hash.rb', line 68 def delete_if @order.clone.each do |k| delete k if yield(k, self[k]) end self end |
#each ⇒ Object Also known as: each_pair
61 62 63 64 |
# File 'lib/ordered_hash.rb', line 61 def each @order.each { |k| yield(k, self[k]) } self end |
#each_key ⇒ Object
51 52 53 54 |
# File 'lib/ordered_hash.rb', line 51 def each_key @order.each { |k| yield k } self end |
#each_value ⇒ Object
56 57 58 59 |
# File 'lib/ordered_hash.rb', line 56 def each_value @order.each { |k| yield self[k] } self end |
#inspect ⇒ Object
120 121 122 123 |
# File 'lib/ordered_hash.rb', line 120 def inspect arr = to_a.map{ |k, v| "#{k.inspect}=>#{v.inspect}" } '{(ordered) ' + arr.join(', ') + ' }' end |
#invert ⇒ Object
85 86 87 88 89 |
# File 'lib/ordered_hash.rb', line 85 def invert hsh2 = self.class.new @order.each { |k| hsh2[self[k]] = k } hsh2 end |
#keys ⇒ Object
81 82 83 |
# File 'lib/ordered_hash.rb', line 81 def keys @order end |
#merge(hsh2) ⇒ Object
154 155 156 |
# File 'lib/ordered_hash.rb', line 154 def merge ( hsh2 ) self.dup.update(hsh2) end |
#merge!(hsh2) ⇒ Object
149 150 151 152 |
# File 'lib/ordered_hash.rb', line 149 def merge! ( hsh2 ) hsh2.each { |k,v| self[k] = v } self end |
#ordered? ⇒ Boolean
164 165 166 |
# File 'lib/ordered_hash.rb', line 164 def ordered? !@order.nil? end |
#pretty_print(q) ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/ordered_hash.rb', line 125 def pretty_print ( q ) q.group(1, '{(ordered) ', '}') { q.seplist(self, nil, :each_pair) {|k, v| q.group { q.pp k q.text '=>' q.group(1) { q.breakable '' q.pp v } } } } end |
#pretty_print_cycle(q) ⇒ Object
140 141 142 |
# File 'lib/ordered_hash.rb', line 140 def pretty_print_cycle(q) q.text(empty? ? '{(ordered)}' : '{(ordered) ...}') end |
#reject(&block) ⇒ Object
91 92 93 |
# File 'lib/ordered_hash.rb', line 91 def reject ( &block ) self.dup.delete_if(&block) end |
#reject!(&block) ⇒ Object
95 96 97 98 |
# File 'lib/ordered_hash.rb', line 95 def reject! ( &block ) hsh2 = reject(&block) self == hsh2 ? nil : hsh2 end |
#replace(hsh2) ⇒ Object
100 101 102 103 |
# File 'lib/ordered_hash.rb', line 100 def replace ( hsh2 ) @order = hsh2.keys super hsh2 end |
#select ⇒ Object
158 159 160 161 162 |
# File 'lib/ordered_hash.rb', line 158 def select ary = [] each { |k,v| ary << [k,v] if yield k,v } ary end |
#shift ⇒ Object
105 106 107 108 |
# File 'lib/ordered_hash.rb', line 105 def shift key = @order.first key ? [key,delete(key)] : super end |
#store(a, b) ⇒ Object
26 27 28 29 |
# File 'lib/ordered_hash.rb', line 26 def store ( a, b ) @order.push a unless has_key? a super a,b end |
#to_a ⇒ Object
110 111 112 113 114 |
# File 'lib/ordered_hash.rb', line 110 def to_a ary = [] each { |k,v| ary << [k,v] } ary end |
#to_s ⇒ Object
116 117 118 |
# File 'lib/ordered_hash.rb', line 116 def to_s to_a.to_s end |
#update(hsh2) ⇒ Object
144 145 146 147 |
# File 'lib/ordered_hash.rb', line 144 def update ( hsh2 ) hsh2.each { |k,v| self[k] = v } self end |
#values ⇒ Object
75 76 77 78 79 |
# File 'lib/ordered_hash.rb', line 75 def values ary = [] @order.each { |k| ary << self[k] } ary end |