Skip to content

Commit

Permalink
Add bind-dictionary extension
Browse files Browse the repository at this point in the history
  • Loading branch information
ccampbell committed May 14, 2013
1 parent 33d902d commit a899dec
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
16 changes: 16 additions & 0 deletions extensions/bind-dictionary/README.md
@@ -0,0 +1,16 @@
# Bind Dictionary

This extension overwrites the default bind behavior and allows you to bind multiple combinations in a single bind call.

Usage looks like:

```javascript
Mousetrap.bind({
'a': function() { console.log('a'); },
'b': function() { console.log('b'); }
});
```

You can optionally pass in ``keypress``, ``keydown`` or ``keyup`` as a second argument.

Other bind calls work the same way as they do by default.
37 changes: 37 additions & 0 deletions extensions/bind-dictionary/bind-dictionary.js
@@ -0,0 +1,37 @@
/**
* Overwrites default Mousetrap.bind method to optionally accept
* an object to bind multiple key events in a single call
*
* You can pass it in like:
*
* Mousetrap.bind({
* 'a': function() { console.log('a'); },
* 'b': function() { console.log('b'); }
* });
*
* And can optionally pass in 'keypress', 'keydown', or 'keyup'
* as a second argument
*/
Mousetrap = (function(Mousetrap) {
var self = Mousetrap,
_oldBind = self.bind,
args;

self.bind = function() {
args = arguments;

// normal call
if (typeof args[0] == 'string' || args[0] instanceof Array) {
return _oldBind(args[0], args[1], args[2]);
}

// object passed in
for (var key in args[0]) {
if (args[0].hasOwnProperty(key)) {
_oldBind(key, args[0][key], args[1]);
}
}
};

return self;
}) (Mousetrap);
1 change: 1 addition & 0 deletions extensions/bind-dictionary/bind-dictionary.min.js
@@ -0,0 +1 @@
Mousetrap=function(b){var c=b.bind,a;b.bind=function(){a=arguments;if("string"==typeof a[0]||a[0]instanceof Array)return c(a[0],a[1],a[2]);for(var b in a[0])a[0].hasOwnProperty(b)&&c(b,a[0][b],a[1])};return b}(Mousetrap);

0 comments on commit a899dec

Please sign in to comment.