module Gorillib::Hashlike::OverrideEnumerable

Overrides the implementation in Enumerable, which iterates on keys, not key/value pairs

Public Instance Methods

reject(&block) click to toggle source

Deletes every key-value pair from hsh for which block evaluates to true (similar to Hashlike#delete_if), but works on (and returns) a copy of the hsh. Equivalent to hsh.dup.delete_if.

@example

hsh = { :a => 100, :b => 200, :c => 300 }
hsh.reject{|key, val| key.to_s >= "b" }   # => { :a => 100 }
hsh # => { :a => 100, :b => 200, :c => 300 }

hsh = { :a => 100, :b => 200, :c => 300 }
hsh.reject{|key, val| key.to_s >= "z" }   # => { :a => 100, :b => 200, :c => 300 }
hsh # => { :a => 100, :b => 200, :c => 300 }

@overload hsh.reject{|key, val| block } -> new_hashlike

Deletes every key-value pair from +hsh+ for which +block+ evaluates truthy.
@return [Hashlike]

@overload hsh.reject -> an_enumerator

with no block, returns a raw enumerator
@return [Enumerator]

Overrides the implementation in Enumerable, which does the keys wrong.

# File lib/gorillib/hashlike.rb, line 686
def reject(&block)
  return enum_for(:reject) unless block_given?
  self.dup.delete_if(&block)
end
select(&block) click to toggle source

Deletes every key-value pair from hsh for which block evaluates to false (similar to Hashlike#keep_if), but works on (and returns) a copy of the hsh. Equivalent to hsh.dup.keep_if.

@example

hsh = { :a => 100, :b => 200, :c => 300 }
hsh.select{|key, val| key.to_s >= "b" }   # => { :b => 200, :c => 300 }
hsh # => { :a => 100, :b => 200, :c => 300 }

hsh = { :a => 100, :b => 200, :c => 300 }
hsh.select{|key, val| key.to_s >= "z" }   # => { }
hsh # => { :a => 100, :b => 200, :c => 300 }

@overload hsh.select{|key, val| block } -> new_hashlike

Deletes every key-value pair from +hsh+ for which +block+ evaluates truthy.
@return [Hashlike]

@overload hsh.select -> an_enumerator

with no block, returns a raw enumerator
@return [Enumerator]

Overrides the implementation in Enumerable, which does the keys wrong.

# File lib/gorillib/hashlike.rb, line 715
def select(&block)
  return enum_for(:select) unless block_given?
  self.dup.keep_if(&block)
end