Method: HashTools#transform_string_values_of

Defined in:
lib/hash_tools.rb

#transform_string_values_of(any, &transformer) ⇒ Object

Recursively convert string values in nested hashes and arrays using a passed block. The block will receive the String to transform and should return a transformed string.

Parameters:

  • any (Hash, String, Array)

    the value to transform the contained items in

  • transformer

    The block applied to each string value, recursively

Returns:

  • the transformed value



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/hash_tools.rb', line 87

def transform_string_values_of(any, &transformer)
  case any
  when String
    transformer.call(any)
  when Array
    any.map { |e| transform_string_values_of(e, &transformer) }
  when Hash
    h = {}
    any.each_pair do |k, v|
      h[k] = transform_string_values_of(v, &transformer)
    end
    h
  else
    any
  end
end