lib/gorillib/hash/keys.rb in gorillib-0.0.8 vs lib/gorillib/hash/keys.rb in gorillib-0.1.0

- old
+ new

@@ -1,42 +1,4 @@ +require 'gorillib/hashlike/keys' class Hash - # Return a new hash with all keys converted to strings. - def stringify_keys - dup.stringify_keys! - end unless method_defined?(:stringify_keys) - - # Destructively convert all keys to strings. - def stringify_keys! - keys.each do |key| - self[key.to_s] = delete(key) - end - self - end unless method_defined?(:stringify_keys!) - - # Return a new hash with all keys converted to symbols, as long as - # they respond to +to_sym+. - def symbolize_keys - dup.symbolize_keys! - end unless method_defined?(:symbolize_keys) - - # Destructively convert all keys to symbols, as long as they respond - # to +to_sym+. - def symbolize_keys! - keys.each do |key| - self[(key.to_sym rescue key) || key] = delete(key) - end - self - end unless method_defined?(:symbolize_keys!) - - # Validate all keys in a hash match *valid keys, raising ArgumentError on a mismatch. - # Note that keys are NOT treated indifferently, meaning if you use strings for keys but assert symbols - # as keys, this will fail. - # - # ==== Examples - # { :name => "Rob", :years => "28" }.assert_valid_keys(:name, :age) # => raises "ArgumentError: Unknown key(s): years" - # { :name => "Rob", :age => "28" }.assert_valid_keys("name", "age") # => raises "ArgumentError: Unknown key(s): name, age" - # { :name => "Rob", :age => "28" }.assert_valid_keys(:name, :age) # => passes, raises nothing - def assert_valid_keys(*valid_keys) - unknown_keys = keys - [valid_keys].flatten - raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(", ")}") unless unknown_keys.empty? - end unless method_defined?(:assert_valid_keys) + include Gorillib::Hashlike::Keys end