Sha256: 655718c8986e6a658521a5048a1dec9c3c0eb2db38689e1ab9a07afe4f7545d0

Contents?: true

Size: 1021 Bytes

Versions: 4

Compression:

Stored size: 1021 Bytes

Contents

class Hash
  def netzke_deep_map(&block)
    self.dup.tap do |h|
      h.each_pair do |k,v|
        h[k] = v.netzke_deep_map(&block) if v.respond_to?('netzke_deep_map')
      end
    end
  end

  def netzke_jsonify
    self.inject({}) do |h,(k,v)|
      new_key = if k.is_a?(ActiveSupport::JSON::Variable)
                  k
                elsif k.is_a?(String)
                  k.camelize(:lower)
                elsif k.is_a?(Symbol)
                  k.to_s.camelize(:lower).to_sym
                else
                  k
                end

      new_value = v.is_a?(Array) || v.is_a?(Hash) ? v.netzke_jsonify : v

      h.merge(new_key => new_value)
    end
  end

  # From http://rubyworks.github.com/facets
  def netzke_update_keys #:yield:
    if block_given?
      keys.each { |old_key| store(yield(old_key), delete(old_key)) }
    else
      to_enum(:netzke_update_keys)
    end
  end

  def netzke_literalize_keys
    netzke_update_keys{ |k| ActiveSupport::JSON::Variable.new(k.to_s) }
    self
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
netzke-core-0.9.0.rc1 lib/netzke/core/ruby_ext/hash.rb
netzke-core-0.8.4 lib/netzke/core/ruby_ext/hash.rb
netzke-core-0.8.3 lib/netzke/core/ruby_ext/hash.rb
netzke-core-0.8.2 lib/netzke/core/ruby_ext/hash.rb