Module: HashOrderHelper
- Defined in:
- lib/hash_order_helper.rb
Instance Method Summary collapse
- #at(nth) ⇒ Object
- #insert(nth, insert_hash) ⇒ Object
- #last(n = nil) ⇒ Object
- #pop(n = nil) ⇒ Object
- #push(push_hash) ⇒ Object
- #sort_pair ⇒ Object
- #sort_pair! ⇒ Object
- #sort_pair_by(&block) ⇒ Object
- #sort_pair_by!(&block) ⇒ Object
- #unshift(unshift_hash) ⇒ Object
Instance Method Details
#at(nth) ⇒ Object
30 31 32 |
# File 'lib/hash_order_helper.rb', line 30 def at(nth) self.to_a.at(nth) end |
#insert(nth, insert_hash) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/hash_order_helper.rb', line 34 def insert(nth, insert_hash) hash_keys = self.keys hash_keys.insert(nth, *insert_hash.keys) new_hash = {} hash_keys.each do |key| value = insert_hash.has_key?(key) ? insert_hash[key] : self[key] new_hash[key] = value end self.replace(new_hash) end |
#last(n = nil) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/hash_order_helper.rb', line 47 def last(n = nil) if n.nil? self.to_a.last else self.to_a.last(n) end end |
#pop(n = nil) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/hash_order_helper.rb', line 55 def pop(n = nil) ary = self.to_a last_values = n.nil? ? ary.pop : ary.pop(n) new_hash = {} ary.each do |k, v| new_hash[k] = v end self.replace(new_hash) last_values end |
#push(push_hash) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/hash_order_helper.rb', line 68 def push(push_hash) hash_keys = self.keys - push_hash.keys hash_keys.push(*push_hash.keys) new_hash = {} hash_keys.each do |key| value = push_hash.has_key?(key) ? push_hash[key] : self[key] new_hash[key] = value end self.replace(new_hash) end |
#sort_pair ⇒ Object
2 3 4 5 6 7 8 9 10 |
# File 'lib/hash_order_helper.rb', line 2 def sort_pair new_hash = {} self.sort_by(&:to_s).each do |k, v| new_hash[k] = v end new_hash end |
#sort_pair! ⇒ Object
12 13 14 |
# File 'lib/hash_order_helper.rb', line 12 def sort_pair! self.replace(self.sort_pair) end |
#sort_pair_by(&block) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/hash_order_helper.rb', line 16 def sort_pair_by(&block) new_hash = {} self.sort_by(&block).each do |k, v| new_hash[k] = v end new_hash end |
#sort_pair_by!(&block) ⇒ Object
26 27 28 |
# File 'lib/hash_order_helper.rb', line 26 def sort_pair_by!(&block) self.replace(self.sort_pair_by(&block)) end |
#unshift(unshift_hash) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/hash_order_helper.rb', line 80 def unshift(unshift_hash) hash_keys = self.keys - unshift_hash.keys hash_keys.unshift(*unshift_hash.keys) new_hash = {} hash_keys.each do |key| value = unshift_hash.has_key?(key) ? unshift_hash[key] : self[key] new_hash[key] = value end self.replace(new_hash) end |