]> git.openstreetmap.org Git - rails.git/blobdiff - vendor/gems/composite_primary_keys-2.2.2/test/hash_tricks.rb
Add version 2.2.2 of composite_primary_keys.
[rails.git] / vendor / gems / composite_primary_keys-2.2.2 / test / hash_tricks.rb
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/hash_tricks.rb b/vendor/gems/composite_primary_keys-2.2.2/test/hash_tricks.rb
new file mode 100644 (file)
index 0000000..b37bbbb
--- /dev/null
@@ -0,0 +1,34 @@
+# From:\r
+# http://www.bigbold.com/snippets/posts/show/2178\r
+# http://blog.caboo.se/articles/2006/06/11/stupid-hash-tricks\r
+# \r
+# An example utilisation of these methods in a controller is:\r
+# def some_action\r
+#    # some script kiddie also passed in :bee, which we don't want tampered with _here_.\r
+#    @model = Model.create(params.pass(:foo, :bar))\r
+#  end\r
+class Hash\r
+\r
+  # lets through the keys in the argument\r
+  # >> {:one => 1, :two => 2, :three => 3}.pass(:one)\r
+  # => {:one=>1}\r
+  def pass(*keys)\r
+    keys = keys.first if keys.first.is_a?(Array)\r
+    tmp = self.clone\r
+    tmp.delete_if {|k,v| ! keys.include?(k.to_sym) }\r
+    tmp.delete_if {|k,v| ! keys.include?(k.to_s) }\r
+    tmp\r
+  end\r
+\r
+  # blocks the keys in the arguments\r
+  # >> {:one => 1, :two => 2, :three => 3}.block(:one)\r
+  # => {:two=>2, :three=>3}\r
+  def block(*keys)\r
+    keys = keys.first if keys.first.is_a?(Array)\r
+    tmp = self.clone\r
+    tmp.delete_if {|k,v| keys.include?(k.to_sym) }\r
+    tmp.delete_if {|k,v| keys.include?(k.to_s) }\r
+    tmp\r
+  end\r
+\r
+end\r