Class: Hashish
- Includes:
- Enumerable
- Defined in:
- lib/puppet/feature/aviator/core/utils/hashish.rb
Overview
Hash-ish!
This class is implemented using composition rather than inheritance so that we have control over what operations it exposes to peers.
Instance Method Summary collapse
- #==(other_obj) ⇒ Object
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #dup ⇒ Object
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
- #has_key?(name) ⇒ Boolean
- #hash ⇒ Object
-
#initialize(hash = {}) ⇒ Hashish
constructor
A new instance of Hashish.
- #keys ⇒ Object
- #length ⇒ Object
- #merge(other_hash) ⇒ Object
- #merge!(other_hash) ⇒ Object
- #to_json(obj) ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(hash = {}) ⇒ Hashish
Returns a new instance of Hashish.
10 11 12 13 14 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 10 def initialize(hash={}) @hash = hash.dup stringify_keys hashishify_values end |
Instance Method Details
#==(other_obj) ⇒ Object
16 17 18 19 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 16 def ==(other_obj) other_obj.class == self.class && other_obj.hash == self.hash end |
#[](key) ⇒ Object
21 22 23 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 21 def [](key) @hash[normalize(key)] end |
#[]=(key, value) ⇒ Object
25 26 27 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 25 def []=(key, value) @hash[normalize(key)] = value end |
#dup ⇒ Object
29 30 31 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 29 def dup Hashish.new(JSON.parse(@hash.to_json)) end |
#each(&block) ⇒ Object
33 34 35 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 33 def each(&block) @hash.each(&block) end |
#empty? ⇒ Boolean
37 38 39 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 37 def empty? @hash.empty? end |
#has_key?(name) ⇒ Boolean
41 42 43 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 41 def has_key?(name) @hash.has_key? normalize(name) end |
#hash ⇒ Object
45 46 47 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 45 def hash @hash end |
#keys ⇒ Object
49 50 51 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 49 def keys @hash.keys end |
#length ⇒ Object
53 54 55 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 53 def length @hash.length end |
#merge(other_hash) ⇒ Object
57 58 59 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 57 def merge(other_hash) Hashish.new(@hash.merge(other_hash)) end |
#merge!(other_hash) ⇒ Object
61 62 63 64 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 61 def merge!(other_hash) @hash.merge! other_hash self end |
#to_json(obj) ⇒ Object
66 67 68 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 66 def to_json(obj) @hash.to_json(obj) end |
#to_s ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/puppet/feature/aviator/core/utils/hashish.rb', line 70 def to_s str = "{" @hash.each do |key, value| if value.kind_of? String value = "'#{value}'" elsif value.nil? value = "nil" elsif value.kind_of? Array value = "[#{value.join(", ")}]" end str += " #{key}: #{value}," end str = str[0...-1] + " }" str end |