Sha256: 70e77f11d41b2ffb263ff8093afa10bb1fa2b214f76bb31465f98cad44b8a498

Contents?: true

Size: 871 Bytes

Versions: 4

Compression:

Stored size: 871 Bytes

Contents

module FoodTruck
  # Recursively convert keys in a Hash or Array to symbols.
  #
  # See:
  # - [original code](https://avdi.codes/recursively-symbolize-keys/)
  # - [array support](https://gist.github.com/neektza/8585746)
  #
  # @param obj [Hash,Array]
  # @return [Hash,Array]
  def self.symbolize_keys(arg)
    if arg.is_a?(Hash)
      arg.inject({}) do |result, (key, value)|
        new_key = case key
                  when String then key.to_sym()
                  else key
                  end
        new_value = case value
                    when Hash then symbolize_keys(value)
                    when Array then symbolize_keys(value)
                    else value
                    end
        result[new_key] = new_value
        result
      end
    elsif arg.is_a?(Array)
      arg.map { |e| symbolize_keys(e) }
    else
      arg
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
food_truck-0.5.2 lib/food_truck/symbolize.rb
food_truck-0.5.1 lib/food_truck/symbolize.rb
food_truck-0.5.0 lib/food_truck/symbolize.rb
food_truck-0.4.0 lib/food_truck/symbolize.rb