class Object
Constants
- DEFAULT_KEY
- DIMENSIONS
- ENCRYPTION_ALGO
- FEET_TO_METRES_CONVERSION
- IMPERIAL_UNITS
- KEY_LENGTH
- METRIC_PREFIXES
Public Instance Methods
deep_slice(*allowed_keys)
click to toggle source
# File lib/housing_misc/slice_helper.rb, line 8 def deep_slice(*allowed_keys) sliced = {} allowed_keys.each do |allowed_key| if allowed_key.is_a?(Hash) allowed_key.each do |allowed_subkey, allowed_subkey_values| allowed_subkey_org , allowed_subkey_to_replace = find_orig_and_swap_key(allowed_subkey) if (has_key?(allowed_subkey_org) | has_key?(allowed_subkey_org.to_sym)) value = has_key?(allowed_subkey_org) ? self[allowed_subkey_org] : self[allowed_subkey_org.to_sym] if value.is_a?(Hash) sliced[allowed_subkey_to_replace] = value.deep_slice(*Array.wrap(allowed_subkey_values)) elsif value.is_a?(Array) temp_array_slice = [] value.each do |val| temp_array_slice << val.deep_slice(*Array.wrap(allowed_subkey_values)) end sliced[allowed_subkey_to_replace] = temp_array_slice else raise ArgumentError, "can only deep-slice hash values, but value for #{allowed_subkey.inspect} was of type #{value.class.name}" end end end else Array.wrap(allowed_key).each do |k| k_org, k_to_replace = find_orig_and_swap_key(k) if has_key?(k_org) sliced[k_to_replace] = self[k_org] elsif has_key?(k_org.to_sym) sliced[k_to_replace] = self[k_org.to_sym] end end end end return sliced end
find_orig_and_swap_key(key)
click to toggle source
# File lib/housing_misc/slice_helper.rb, line 1 def find_orig_and_swap_key(key) keys = key.split(",") return keys[0], keys[1] if keys.size > 1 return key, key end