Class: Vagrant::Util::HashWithIndifferentAccess
- Inherits:
-
Hash
- Object
- Hash
- Vagrant::Util::HashWithIndifferentAccess
- Defined in:
- lib/vagrant/util/hash_with_indifferent_access.rb
Overview
A hash with indifferent access. Mostly taken from Thor/Rails (thanks). Normally I'm not a fan of using an indifferent access hash since Symbols are basically memory leaks in Ruby, but since Vagrant is typically a quick one-off binary run and it doesn't use too many hash keys where this is used, the effect should be minimal.
hash[:foo] #=> 'bar' hash['foo'] #=> 'bar'
Direct Known Subclasses
Instance Method Summary (collapse)
- - (Object) [](key)
- - (Object) []=(key, value)
- - (Object) delete(key)
-
- (HashWithIndifferentAccess) initialize(hash = {}, &block)
constructor
A new instance of HashWithIndifferentAccess.
- - (Boolean) key?(key) (also: #include?, #has_key?, #member?)
- - (Object) merge(other)
- - (Object) merge!(other)
- - (Object) values_at(*indices)
Constructor Details
- (HashWithIndifferentAccess) initialize(hash = {}, &block)
A new instance of HashWithIndifferentAccess
13 14 15 16 17 18 19 |
# File 'lib/vagrant/util/hash_with_indifferent_access.rb', line 13 def initialize(hash={}, &block) super(&block) hash.each do |key, value| self[convert_key(key)] = value end end |
Instance Method Details
- (Object) [](key)
21 22 23 |
# File 'lib/vagrant/util/hash_with_indifferent_access.rb', line 21 def [](key) super(convert_key(key)) end |
- (Object) []=(key, value)
25 26 27 |
# File 'lib/vagrant/util/hash_with_indifferent_access.rb', line 25 def []=(key, value) super(convert_key(key), value) end |
- (Object) delete(key)
29 30 31 |
# File 'lib/vagrant/util/hash_with_indifferent_access.rb', line 29 def delete(key) super(convert_key(key)) end |
- (Boolean) key?(key) Also known as: include?, has_key?, member?
48 49 50 |
# File 'lib/vagrant/util/hash_with_indifferent_access.rb', line 48 def key?(key) super(convert_key(key)) end |
- (Object) merge(other)
37 38 39 |
# File 'lib/vagrant/util/hash_with_indifferent_access.rb', line 37 def merge(other) dup.merge!(other) end |
- (Object) merge!(other)
41 42 43 44 45 46 |
# File 'lib/vagrant/util/hash_with_indifferent_access.rb', line 41 def merge!(other) other.each do |key, value| self[convert_key(key)] = value end self end |
- (Object) values_at(*indices)
33 34 35 |
# File 'lib/vagrant/util/hash_with_indifferent_access.rb', line 33 def values_at(*indices) indices.collect { |key| self[convert_key(key)] } end |