lib/miu/utility.rb in miu-0.1.0 vs lib/miu/utility.rb in miu-0.2.0

- old
+ new

@@ -1,46 +1,51 @@ module Miu module Utility module_function + def adapt(klass, value) + value ||= {} + value.is_a?(klass) ? value : klass.new(value) + end + def extract_options!(args) args.last.is_a?(::Hash) ? args.pop : {} end - def modified_keys(hash, recursive = false, &block) + def modify_keys(hash, recursive = false, &block) hash = hash.dup if block hash.keys.each do |key| value = hash.delete(key) if recursive case value when ::Hash - value = modified_keys(value, recursive, &block) + value = modify_keys(value, recursive, &block) when ::Array - value = value.map { |v| v.is_a?(::Hash) ? modified_keys(v, recursive, &block) : v } + value = value.map { |v| v.is_a?(::Hash) ? modify_keys(v, recursive, &block) : v } end end key = block.call key hash[key] = value end end hash end - def symbolized_keys(hash, recursive = false) - modified_keys(hash, recursive) do |key| + def symbolize_keys(hash, recursive = false) + modify_keys(hash, recursive) do |key| key.to_sym rescue key end end def underscorize_keys(hash, recursive = false) - modified_keys(hash, recursive) do |key| + modify_keys(hash, recursive) do |key| key.gsub('-', '_') rescue key end end - def optionalize_keys(hash, recursive = false) - modified_keys(hash, recursive) do |key| + def optionify_keys(hash, recursive = false) + modify_keys(hash, recursive) do |key| key.to_s.gsub('-', '_').to_sym rescue key end end end end