Sha256: 0ffae9b9ed1e330fa2860b2ab3043a5f96cbc38467a75f712af427018a2d08f6

Contents?: true

Size: 678 Bytes

Versions: 4

Compression:

Stored size: 678 Bytes

Contents

class Hash
  def sort_array!
    keys.each do |key|
      value = self[key]
      self[key] = sort_array0(value)
    end

    self
  end

  def keys_to_s_recursive
    new_one = {}
    self.each do |key, elem|
      if elem.respond_to? :keys_to_s_recursive
        new_one[key.to_s] = elem.keys_to_s_recursive
        next
      end
      new_one[key.to_s] = elem
    end
    new_one
  end

  private

  def sort_array0(value)
    case value
    when Hash
      new_value = {}

      value.each do |k, v|
        new_value[k] = sort_array0(v)
      end

      new_value
    when Array
      value.map {|v| sort_array0(v) }.sort_by(&:to_s)
    else
      value
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
subiam-1.3.2 lib/subiam/ext/hash_ext.rb
subiam-1.3.1 lib/subiam/ext/hash_ext.rb
subiam-1.3.0 lib/subiam/ext/hash_ext.rb
subiam-1.2.1 lib/subiam/ext/hash_ext.rb