Sha256: d6bf4e3fa1378752e67d52f408b291991eb7c2e595dd4de9061966e1fd3f332a

Contents?: true

Size: 644 Bytes

Versions: 10

Compression:

Stored size: 644 Bytes

Contents

class CleanHash
  def self.pollute!
    ::Hash.class_eval do
      # merge but to not overwrite keys
      def deep_merge hash
        klass = ::CleanHash::DeepMerge
        klass[deep_clone].deep_merge klass[hash]
      end

      # true clone of the hash with 0 references to the old one
      def deep_clone
        Marshal.load(Marshal.dump(self))
      end

      def to_ch mode=nil
        if mode.is_a?(Array)
          mode.each { |el| self[el] = nil if self[el].nil? }
          ::CleanHash.create_struct self
        else
          mode ||= :indifferent
          ::CleanHash.create mode, self
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
clean-hash-0.5.10 ./lib/clean-hash/hash_pollute.rb
clean-hash-0.5.9 ./lib/clean-hash/hash_pollute.rb
clean-hash-0.5.8 ./lib/clean-hash/hash_pollute.rb
clean-hash-0.5.6 ./lib/clean-hash/hash_pollute.rb
clean-hash-0.5.5 ./lib/clean-hash/hash_pollute.rb
clean-hash-0.5.4 ./lib/clean-hash/hash_pollute.rb
clean-hash-0.5.3 ./lib/clean-hash/hash_pollute.rb
clean-hash-0.5.2 ./lib/clean-hash/hash_pollute.rb
clean-hash-0.5.1 ./lib/clean-hash/hash_pollute.rb
clean-hash-0.5.0 ./lib/clean-hash/hash_pollute.rb