/usr/lib/ruby/vendor_ruby/multi_json/convertible_hash_keys.rb is in ruby-multi-json 1.12.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | module MultiJson
module ConvertibleHashKeys
private
def symbolize_keys(hash)
prepare_hash(hash) do |key|
key.respond_to?(:to_sym) ? key.to_sym : key
end
end
def stringify_keys(hash)
prepare_hash(hash) do |key|
key.respond_to?(:to_s) ? key.to_s : key
end
end
def prepare_hash(hash, &key_modifier)
return hash unless block_given?
case hash
when Array
hash.map do |value|
prepare_hash(value, &key_modifier)
end
when Hash
hash.inject({}) do |result, (key, value)|
new_key = key_modifier.call(key)
new_value = prepare_hash(value, &key_modifier)
result.merge! new_key => new_value
end
when String, Numeric, true, false, nil
hash
else
if hash.respond_to?(:to_json)
hash
elsif hash.respond_to?(:to_s)
hash.to_s
else
hash
end
end
end
end
end
|