aboutsummaryrefslogtreecommitdiffstats
path: root/lib/utils.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'lib/utils.coffee')
-rw-r--r--lib/utils.coffee17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/utils.coffee b/lib/utils.coffee
index 661f7e84..64c87842 100644
--- a/lib/utils.coffee
+++ b/lib/utils.coffee
@@ -152,6 +152,23 @@ Utils =
# locale-sensitive uppercase detection
hasUpperCase: (s) -> s.toLowerCase() != s
+ # Give objects (including elements) distinct identities.
+ getIdentity: do ->
+ identities = []
+
+ (obj) ->
+ index = identities.indexOf obj
+ if index < 0
+ index = identities.length
+ identities.push obj
+ "identity-" + index
+
+ # Return a copy of object, but with some of its properties omitted.
+ copyObjectOmittingProperties: (obj, properties...) ->
+ obj = extend {}, obj
+ delete obj[property] for property in properties
+ obj
+
# This creates a new function out of an existing function, where the new function takes fewer arguments. This
# allows us to pass around functions instead of functions + a partial list of arguments.
Function::curry = ->