Sha256: bd1354f49f8f2e2f3f5a9758c5dec84042d3faa1f91ea6b8283a6e9e32805dfc
Contents?: true
Size: 860 Bytes
Versions: 3
Compression:
Stored size: 860 Bytes
Contents
# frozen_string_literal: true class Hash # Replaces the hash with only the given keys. # Returns a hash containing the removed key/value pairs. # # hash = { a: 1, b: 2, c: 3, d: 4 } # hash.slice!(:a, :b) # => {:c=>3, :d=>4} # hash # => {:a=>1, :b=>2} def slice!(*keys) omit = slice(*self.keys - keys) hash = slice(*keys) hash.default = default hash.default_proc = default_proc if default_proc replace(hash) omit end # Removes and returns the key/value pairs matching the given keys. # # { a: 1, b: 2, c: 3, d: 4 }.extract!(:a, :b) # => {:a=>1, :b=>2} # { a: 1, b: 2 }.extract!(:a, :x) # => {:a=>1} def extract!(*keys) keys.each_with_object(self.class.new) { |key, result| result[key] = delete(key) if has_key?(key) } end alias_method :extract, :slice end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
simple_ext-0.1.3 | lib/simple_ext/hash/slice.rb |
simple_ext-0.1.2 | lib/simple_ext/hash/slice.rb |
simple_ext-0.1.1 | lib/simple_ext/hash/slice.rb |