class Shrink::Wrap::Transformer::Symbolize
Constants
- DEFAULT_DEPTH
Public Instance Methods
transform(input)
click to toggle source
# File lib/shrink/wrap/transformer/symbolize.rb, line 9 def transform(input) symbolize(input, 0) end
Private Instance Methods
symbolize(element, depth, symbolize_singular = false)
click to toggle source
rubocop:disable Style/OptionalBooleanParameter
# File lib/shrink/wrap/transformer/symbolize.rb, line 16 def symbolize(element, depth, symbolize_singular = false) return element if depth > options.fetch(:depth) { DEFAULT_DEPTH } case element when Hash symbolize_hash(element, depth + 1) when Enumerable symbolize_enumerable(element, depth) else symbolize_singular ? to_sym(element) : element end end
symbolize_enumerable(array, depth)
click to toggle source
rubocop:enable Style/OptionalBooleanParameter
# File lib/shrink/wrap/transformer/symbolize.rb, line 30 def symbolize_enumerable(array, depth) array.map { |i| symbolize(i, depth) } end
symbolize_hash(hash, next_depth)
click to toggle source
# File lib/shrink/wrap/transformer/symbolize.rb, line 34 def symbolize_hash(hash, next_depth) hash.each_with_object({}) do |(key, value), memo| new_key = symbolize(key, next_depth, true) new_value = symbolize(value, next_depth, false) memo[new_key] = new_value end end
to_sym(element)
click to toggle source
# File lib/shrink/wrap/transformer/symbolize.rb, line 42 def to_sym(element) element.respond_to?(:to_sym) ? element.to_sym : element end