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'
# 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
# File lib/vagrant/util/hash_with_indifferent_access.rb, line 21 def [](key) super(convert_key(key)) end
# File lib/vagrant/util/hash_with_indifferent_access.rb, line 25 def []=(key, value) super(convert_key(key), value) end
# File lib/vagrant/util/hash_with_indifferent_access.rb, line 29 def delete(key) super(convert_key(key)) end
# File lib/vagrant/util/hash_with_indifferent_access.rb, line 48 def key?(key) super(convert_key(key)) end
# File lib/vagrant/util/hash_with_indifferent_access.rb, line 37 def merge(other) dup.merge!(other) end
# 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
# File lib/vagrant/util/hash_with_indifferent_access.rb, line 33 def values_at(*indices) indices.collect { |key| self[convert_key(key)] } end
# File lib/vagrant/util/hash_with_indifferent_access.rb, line 58 def convert_key(key) key.is_a?(Symbol) ? key.to_s : key end