Sha256: dadb977a0ca061596012ec1d2fc44a32d8035e4cf643bfa0aedf903a4dde0faa

Contents?: true

Size: 1.14 KB

Versions: 13

Compression:

Stored size: 1.14 KB

Contents

require 'tsort'

class Array
  def to_yaml_style
    :inline
  end
end

class Hash
  include TSort
  alias tsort_each_node each_key
  def tsort_each_child(node, &block)
    fetch(node).each(&block)
  end

  # https://github.com/rails/rails/blob/c48a0cac626b4e32d7abfa9f4f1fae16568157d9/activesupport/lib/active_support/core_ext/hash/keys.rb
  #
  # Destructively convert all keys to symbols, as long as they respond
  # to +to_sym+. This includes the keys from the root hash and from all
  # nested hashes.
  #
  def deep_symbolize_keys!
    deep_transform_keys!{ |key| key.to_sym rescue key }
  end

  def deep_stringify_keys!
    deep_transform_keys!{ |key| key.to_s rescue key }
  end

  # Destructively convert all keys by using the block operation.
  # This includes the keys from the root hash and from all
  # nested hashes.
  #
  def deep_transform_keys! &block
    keys.each do |key|
      value = delete(key)

      self[yield(key)] = case value
      when Hash
        value.deep_transform_keys!(&block)
      when Array
        value.each{ |e| e.deep_transform_keys!(&block) rescue value }
      else
        value
      end
    end
    self
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
yuyi-1.0.8 lib/yuyi/core.rb
yuyi-1.0.7 lib/yuyi/core.rb
yuyi-1.0.6 lib/yuyi/core.rb
yuyi-1.0.5 lib/yuyi/core.rb
yuyi-1.0.4 lib/yuyi/core.rb
yuyi-1.0.3 lib/yuyi/core.rb
yuyi-1.0.2 lib/yuyi/core.rb
yuyi-1.0.1 lib/yuyi/core.rb
yuyi-1.0.0 lib/yuyi/core.rb
yuyi-0.0.8 lib/yuyi/core.rb
yuyi-0.0.7 lib/yuyi/core.rb
yuyi-0.0.6 lib/yuyi/core.rb
yuyi-0.0.3 lib/yuyi/core.rb