Class: Hash
- Defined in:
- lib/lab42/core/open_object.rb,
lib/lab42/core/hash.rb
Overview
class OpenObject
Instance Method Summary collapse
- #fetch!(key, *defaults, &defblk) ⇒ Object (also: #fetch_or_set)
- #only(*args) ⇒ Object
- #reject_values(*behavior, &beh) ⇒ Object
- #replace_rec(*keys, limit: nil, limits: nil, &valblock) ⇒ Object
- #select_values(*behavior, &beh) ⇒ Object
- #to_open_object ⇒ Object
- #with_present(key, default: nil) ⇒ Object
- #without(*keys) ⇒ Object
Instance Method Details
#fetch!(key, *defaults, &defblk) ⇒ Object Also known as: fetch_or_set
4 5 6 7 8 9 10 |
# File 'lib/lab42/core/hash.rb', line 4 def fetch! key, *defaults, &defblk default_present = !(defaults.empty? && defblk.nil?) return fetch key unless default_present fetch key do self[ key ] = defblk ? defblk.() : defaults.first end end |
#only(*args) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/lab42/core/hash.rb', line 18 def only *args args.inject Hash.new do | r, k | if has_key? k r.merge k => self[k] else r end end end |
#reject_values(*behavior, &beh) ⇒ Object
28 29 30 31 |
# File 'lib/lab42/core/hash.rb', line 28 def reject_values *behavior, &beh beh = Lab42::Meta::Behavior.behavior *behavior, &beh reject{ |_, v| beh.(v) } end |
#replace_rec(*keys, limit: nil, limits: nil, &valblock) ⇒ Object
13 14 15 16 |
# File 'lib/lab42/core/hash.rb', line 13 def replace_rec *keys, limit: nil, limits: nil, &valblock raise ArgumentError, "must not pass in limit: and limits: keyword parameters" if limit && limits return Lab42::Meta::Hash.hash_replace_rec self, keys, valblock, limit || limits end |
#select_values(*behavior, &beh) ⇒ Object
33 34 35 36 |
# File 'lib/lab42/core/hash.rb', line 33 def select_values *behavior, &beh beh = Lab42::Meta::Behavior.behavior *behavior, &beh select{ |_, v| beh.(v) } end |
#to_open_object ⇒ Object
57 58 59 |
# File 'lib/lab42/core/open_object.rb', line 57 def to_open_object OpenObject.new **self end |
#with_present(key, default: nil) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/lab42/core/hash.rb', line 38 def with_present key, default: nil if has_key? key yield fetch(key), self else default end end |