Sha256: 661c5edefe16232258e9fe83bdaee4085df00fa85f109fb6805c488c6798420f

Contents?: true

Size: 1.02 KB

Versions: 56

Compression:

Stored size: 1.02 KB

Contents

# From:
# http://www.bigbold.com/snippets/posts/show/2178
# http://blog.caboo.se/articles/2006/06/11/stupid-hash-tricks
# 
# An example utilisation of these methods in a controller is:
# def some_action
#    # some script kiddie also passed in :bee, which we don't want tampered with _here_.
#    @model = Model.create(params.pass(:foo, :bar))
#  end
class Hash

  # lets through the keys in the argument
  # >> {:one => 1, :two => 2, :three => 3}.pass(:one)
  # => {:one=>1}
  def pass(*keys)
    keys = keys.first if keys.first.is_a?(Array)
    tmp = self.clone
    tmp.delete_if {|k,v| ! keys.include?(k.to_sym) }
    tmp.delete_if {|k,v| ! keys.include?(k.to_s) }
    tmp
  end

  # blocks the keys in the arguments
  # >> {:one => 1, :two => 2, :three => 3}.block(:one)
  # => {:two=>2, :three=>3}
  def block(*keys)
    keys = keys.first if keys.first.is_a?(Array)
    tmp = self.clone
    tmp.delete_if {|k,v| keys.include?(k.to_sym) }
    tmp.delete_if {|k,v| keys.include?(k.to_s) }
    tmp
  end

end

Version data entries

56 entries across 56 versions & 5 rubygems

Version Path
kovyrin-composite_primary_keys-2.3.2 test/hash_tricks.rb
mingusbabcock-composite_primary_keys-2.2.2.1 test/hash_tricks.rb
tyler-composite_primary_keys-1.1.0 test/hash_tricks.rb
tyler-composite_primary_keys-1.1.1 test/hash_tricks.rb
tyler-composite_primary_keys-1.1.2 test/hash_tricks.rb
tyler-composite_primary_keys-1.1.3 test/hash_tricks.rb
tyler-composite_primary_keys-1.1.4 test/hash_tricks.rb
composite_primary_keys-3.0.9 test/hash_tricks.rb
composite_primary_keys-3.0.8 test/hash_tricks.rb
composite_primary_keys-3.0.7 test/hash_tricks.rb
composite_primary_keys-3.0.4 test/hash_tricks.rb
composite_primary_keys-3.0.3 test/hash_tricks.rb
composite_primary_keys-3.0.0.b3 test/hash_tricks.rb
composite_primary_keys-3.0.0.b2 test/hash_tricks.rb
globe-composite_primary_keys-3.0.1 test/hash_tricks.rb
composite_primary_keys-2.3.5.1 test/hash_tricks.rb
composite_primary_keys-2.3.5 test/hash_tricks.rb
composite_primary_keys-2.3.2 test/hash_tricks.rb
composite_primary_keys-0.7.0 test/hash_tricks.rb
composite_primary_keys-0.6.3 test/hash_tricks.rb