Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/hash_extend.rb
Instance Method Summary collapse
-
#compact!(options = Hash.new) ⇒ Object
allow to compact (like Array), default on value.nil?.
-
#delete_many(*keys) ⇒ Object
delete severals keys in one time.
- #except!(*keys) ⇒ Object
-
#insert(value, *keys) ⇒ Object
insert a value trough severals “levels” of hashs.
-
#map_keys ⇒ Object
modify keys from hash through block.
- #map_keys!(&block) ⇒ Object
-
#map_values! ⇒ Object
modify values from hash through block.
-
#select_by!(*collection) ⇒ Object
something like #keep_if, but instead of block, pass collection of keys to select.
- #stealth_delete(*keys) ⇒ Object
-
#stealth_delete!(*keys) ⇒ Object
delete key(s) but return self instead of deleted value.
- #youpi ⇒ Object
Instance Method Details
#compact!(options = Hash.new) ⇒ Object
allow to compact (like Array), default on value.nil?
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/hash_extend.rb', line 89 def compact! = Hash.new compare = .delete(:compare) || :value raise ArgumentError, ":compare option must be in %w{key value}" unless [:key, :value].include? compare.to_sym if (with = .delete :with) self.each do |key, value| self.delete(key) if eval "#{ compare }.#{ with }" end else self.each do |key, value| self.delete(key) if eval "#{ compare }.nil?" end end self end |
#delete_many(*keys) ⇒ Object
delete severals keys in one time
68 69 70 |
# File 'lib/hash_extend.rb', line 68 def delete_many *keys keys.map{ |key| delete(key) } end |
#except!(*keys) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/hash_extend.rb', line 8 def except! *keys p "is personnal methods" keys.each do |key| delete key end return self end |
#insert(value, *keys) ⇒ Object
insert a value trough severals “levels” of hashs
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/hash_extend.rb', line 74 def insert value, *keys if keys.size > 1 shifted = keys.shift self[shifted] ||= Hash.new self[shifted] = self[shifted].insert value, *keys else self[keys.first] = value end self end |
#map_keys ⇒ Object
modify keys from hash through block
55 56 57 58 59 |
# File 'lib/hash_extend.rb', line 55 def map_keys self.inject({}) do |hash, (key, value)| hash[yield key] = value; hash end end |
#map_keys!(&block) ⇒ Object
61 62 63 64 |
# File 'lib/hash_extend.rb', line 61 def map_keys! &block to_map = self.dup self.clear.merge! to_map.map_keys &block end |
#map_values! ⇒ Object
modify values from hash through block
48 49 50 51 52 |
# File 'lib/hash_extend.rb', line 48 def map_values! self.each do |key, value| self[key] = yield value end end |
#select_by!(*collection) ⇒ Object
something like #keep_if, but instead of block, pass collection of keys to select
108 109 110 |
# File 'lib/hash_extend.rb', line 108 def select_by! *collection self.delete_if{ |field, _| !collection.include? field.to_sym } end |
#stealth_delete(*keys) ⇒ Object
41 42 43 44 45 |
# File 'lib/hash_extend.rb', line 41 def stealth_delete *keys except! keys warn "WARNING : method 'stealth_delete' is deprecated and will be deleted in version X.Y - Use 'extract' to fit Rails 3's ActiveSupport" end |
#stealth_delete!(*keys) ⇒ Object
delete key(s) but return self instead of deleted value
35 36 37 38 39 |
# File 'lib/hash_extend.rb', line 35 def stealth_delete! *keys except! keys warn "WARNING : 'stealth_delete!' is deprecated and will be deleted in version X.Y - Use 'extract!' to fit Rails 3's ActiveSupport" end |
#youpi ⇒ Object
22 23 24 25 26 |
# File 'lib/hash_extend.rb', line 22 def youpi p "youpi" end |