mousetrap-rails 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +2 -0
- data/CHANGELOG.md +4 -1
- data/README.md +16 -7
- data/gem-public_cert.pem +20 -0
- data/lib/generators/mousetrap/install/install_generator.rb +5 -0
- data/lib/mousetrap-rails.rb +4 -0
- data/lib/mousetrap-rails/version.rb +1 -1
- data/mousetrap-rails.gemspec +4 -1
- data/vendor/assets/javascripts/mousetrap.js +53 -52
- metadata +42 -14
- metadata.gz.sig +0 -0
data.tar.gz.sig
ADDED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -11,20 +11,28 @@ The `mousetrap-rails` gem integrates Mousetrap javascript library with Rails Ass
|
|
11
11
|
|
12
12
|
Add this line to your application's Gemfile:
|
13
13
|
|
14
|
-
|
14
|
+
```ruby
|
15
|
+
gem 'mousetrap-rails'
|
16
|
+
```
|
15
17
|
|
16
18
|
And then execute:
|
17
19
|
|
18
|
-
|
20
|
+
```bash
|
21
|
+
$ bundle install
|
22
|
+
```
|
19
23
|
|
20
24
|
### Run generator
|
21
25
|
|
22
|
-
|
26
|
+
```bash
|
27
|
+
$ rails generate mousetrap:install
|
28
|
+
```
|
23
29
|
|
24
30
|
It will create sample `keybindings.js.coffee` file in `app/assets/javascripts` and insert mousetrap-rails files to manifests of assert pipeline
|
25
31
|
|
26
|
-
|
27
|
-
|
32
|
+
```coffeescript
|
33
|
+
//= require mousetrap # ---> application.js
|
34
|
+
*= require mousetrap # ---> application.css
|
35
|
+
```
|
28
36
|
|
29
37
|
Voila!
|
30
38
|
|
@@ -32,8 +40,9 @@ Voila!
|
|
32
40
|
|
33
41
|
Instead of `gem 'mousetrap-rails'` add to your Gemfile
|
34
42
|
|
35
|
-
|
36
|
-
|
43
|
+
```ruby
|
44
|
+
gem 'mousetrap-rails', github: 'kugaevsky/mousetrap-rails'
|
45
|
+
```
|
37
46
|
|
38
47
|
## Usage
|
39
48
|
|
data/gem-public_cert.pem
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDMDCCAhigAwIBAgIBADANBgkqhkiG9w0BAQUFADA+MQ0wCwYDVQQDDARuaWNr
|
3
|
+
MRkwFwYKCZImiZPyLGQBGRYJa3VnYWV2c2t5MRIwEAYKCZImiZPyLGQBGRYCcnUw
|
4
|
+
HhcNMTMwMTMxMTgxMjMwWhcNMTQwMTMxMTgxMjMwWjA+MQ0wCwYDVQQDDARuaWNr
|
5
|
+
MRkwFwYKCZImiZPyLGQBGRYJa3VnYWV2c2t5MRIwEAYKCZImiZPyLGQBGRYCcnUw
|
6
|
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3SS01rsI5N3EUG3bSnfI2
|
7
|
+
pr4Exx9gKCBS5IxV7Ot+pQ2psIiWoenaS4fS2fsmvle92ClEx3NbUqnxxGDES0Eb
|
8
|
+
FkNHyAH9VwO36vS0loNv/Ox2sSaleUNV3JdvcP1Gm3xGtn9KWNcpuAwPfMl5BSYg
|
9
|
+
K4WU8zIkbLlwmrO6h85IYZrDwqghb6OCOwhb56d4byjoJE25brUxETxGVdsuVCDr
|
10
|
+
EQroS+D2BiMAEdwJcn/PepMx3lt+teZrjUoei5UXIcnZ28UYSnmXjXnkySlPXzRV
|
11
|
+
siLwUMAgGu665huUE5S8idW7ohSHTJv/kH98BoiWi7gi9HFMz4OJMMeR5rZk76Ql
|
12
|
+
AgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFCdIKkB9lZ+com0wLBhLQDWe
|
13
|
+
YnbvMAsGA1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEANOubFddpzMXJflPv
|
14
|
+
vXXnWXYvZK2etSxzwewXXOhcbzwSxdU0T4NbKcrlhlFbjUDh/xF4Qzc1dB9OFG9r
|
15
|
+
ffIUKv0JtEyGM/mOaISsNp+oYUlXxXLNOsX8LT1r+337tQ627GoX/Z0RL5u8Mz6Q
|
16
|
+
KZUJhGQKNnIp6Rkz6sp4Zh2aqTLt8BDEA86kO+0v4LaVLqFEmLTypf7C568RTYlm
|
17
|
+
N8LaREQMM5YdvCIYWs5C6iNRVaDhT8bkuWNhtBis0H7YFAfsW1rn9np8OQ7nY2az
|
18
|
+
8dNQrBlKzc/RLwGGFT1gjzVlIb7/xtNdMdJQ6JwyljSJ70PbKAAzgBRdDLPt9BWt
|
19
|
+
3AH9mw==
|
20
|
+
-----END CERTIFICATE-----
|
@@ -1,13 +1,17 @@
|
|
1
1
|
module Mousetrap
|
2
|
+
|
3
|
+
# Mousetrap rails generators module
|
2
4
|
module Generators
|
3
5
|
class InstallGenerator < ::Rails::Generators::Base
|
4
6
|
desc "Copy Mousetrap default files"
|
5
7
|
source_root File.expand_path('../templates', __FILE__)
|
6
8
|
|
9
|
+
# Copy keybindings scripts to assets folder
|
7
10
|
def copy_mousetrap
|
8
11
|
copy_file "keybindings.js.coffee", "app/assets/javascripts/keybindings.js.coffee"
|
9
12
|
end
|
10
13
|
|
14
|
+
# Inject moustrap scripts to application.js
|
11
15
|
def add_javascript_assets
|
12
16
|
if File.exist?('app/assets/javascripts/application.js')
|
13
17
|
insert_into_file "app/assets/javascripts/application.js", "//= require mousetrap\n", :after => "jquery_ujs\n"
|
@@ -16,6 +20,7 @@ module Mousetrap
|
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
23
|
+
# Inject moustrap styles to application.css
|
19
24
|
def add_css_assets
|
20
25
|
if File.exist?('app/assets/stylesheets/application.css')
|
21
26
|
insert_into_file "app/assets/stylesheets/application.css", "*= require mousetrap\n ", :before => "*= require_tree ."
|
data/lib/mousetrap-rails.rb
CHANGED
data/mousetrap-rails.gemspec
CHANGED
@@ -17,7 +17,10 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.
|
20
|
+
gem.signing_key = '/Users/nick/.ssh/gem-private_key.pem'
|
21
|
+
gem.cert_chain = ['gem-public_cert.pem']
|
22
|
+
|
23
|
+
gem.add_development_dependency 'rails', '~> 3.2.11'
|
21
24
|
gem.add_development_dependency 'sqlite3', '~> 1.3.5'
|
22
25
|
gem.add_development_dependency 'rspec-rails', '~> 2.12.0'
|
23
26
|
gem.add_development_dependency 'genspec', '~> 0.2.7'
|
@@ -16,7 +16,7 @@
|
|
16
16
|
* Mousetrap is a simple keyboard shortcut library for Javascript with
|
17
17
|
* no external dependencies
|
18
18
|
*
|
19
|
-
* @version 1.
|
19
|
+
* @version 1.3.0
|
20
20
|
* @url craig.is/killing/mice
|
21
21
|
*/
|
22
22
|
(function() {
|
@@ -148,7 +148,7 @@
|
|
148
148
|
*
|
149
149
|
* @type {Object}
|
150
150
|
*/
|
151
|
-
|
151
|
+
_directMap = {},
|
152
152
|
|
153
153
|
/**
|
154
154
|
* keeps track of what level each sequence is at since multiple
|
@@ -156,21 +156,21 @@
|
|
156
156
|
*
|
157
157
|
* @type {Object}
|
158
158
|
*/
|
159
|
-
|
159
|
+
_sequenceLevels = {},
|
160
160
|
|
161
161
|
/**
|
162
162
|
* variable to store the setTimeout call
|
163
163
|
*
|
164
164
|
* @type {null|number}
|
165
165
|
*/
|
166
|
-
|
166
|
+
_resetTimer,
|
167
167
|
|
168
168
|
/**
|
169
169
|
* temporary state where we will ignore the next keyup
|
170
170
|
*
|
171
171
|
* @type {boolean|string}
|
172
172
|
*/
|
173
|
-
|
173
|
+
_ignoreNextKeyup = false,
|
174
174
|
|
175
175
|
/**
|
176
176
|
* are we currently inside of a sequence?
|
@@ -178,7 +178,7 @@
|
|
178
178
|
*
|
179
179
|
* @type {boolean|string}
|
180
180
|
*/
|
181
|
-
|
181
|
+
_sequenceType = false;
|
182
182
|
|
183
183
|
/**
|
184
184
|
* loop through the f keys, f1 to f19 and add them to the map
|
@@ -252,25 +252,25 @@
|
|
252
252
|
/**
|
253
253
|
* resets all sequence counters except for the ones passed in
|
254
254
|
*
|
255
|
-
* @param {Object}
|
255
|
+
* @param {Object} doNotReset
|
256
256
|
* @returns void
|
257
257
|
*/
|
258
|
-
function _resetSequences(
|
259
|
-
|
258
|
+
function _resetSequences(doNotReset, maxLevel) {
|
259
|
+
doNotReset = doNotReset || {};
|
260
260
|
|
261
|
-
var
|
261
|
+
var activeSequences = false,
|
262
262
|
key;
|
263
263
|
|
264
|
-
for (key in
|
265
|
-
if (
|
266
|
-
|
264
|
+
for (key in _sequenceLevels) {
|
265
|
+
if (doNotReset[key] && _sequenceLevels[key] > maxLevel) {
|
266
|
+
activeSequences = true;
|
267
267
|
continue;
|
268
268
|
}
|
269
|
-
|
269
|
+
_sequenceLevels[key] = 0;
|
270
270
|
}
|
271
271
|
|
272
|
-
if (!
|
273
|
-
|
272
|
+
if (!activeSequences) {
|
273
|
+
_sequenceType = false;
|
274
274
|
}
|
275
275
|
}
|
276
276
|
|
@@ -308,7 +308,7 @@
|
|
308
308
|
|
309
309
|
// if this is a sequence but it is not at the right level
|
310
310
|
// then move onto the next match
|
311
|
-
if (callback.seq &&
|
311
|
+
if (callback.seq && _sequenceLevels[callback.seq] != callback.level) {
|
312
312
|
continue;
|
313
313
|
}
|
314
314
|
|
@@ -409,9 +409,9 @@
|
|
409
409
|
function _handleCharacter(character, e) {
|
410
410
|
var callbacks = _getMatches(character, _eventModifiers(e), e),
|
411
411
|
i,
|
412
|
-
|
413
|
-
|
414
|
-
|
412
|
+
doNotReset = {},
|
413
|
+
maxLevel = 0,
|
414
|
+
processedSequenceCallback = false;
|
415
415
|
|
416
416
|
// loop through matching callbacks for this key event
|
417
417
|
for (i = 0; i < callbacks.length; ++i) {
|
@@ -422,21 +422,21 @@
|
|
422
422
|
// callback for matching g cause otherwise you can only ever
|
423
423
|
// match the first one
|
424
424
|
if (callbacks[i].seq) {
|
425
|
-
|
425
|
+
processedSequenceCallback = true;
|
426
426
|
|
427
427
|
// as we loop through keep track of the max
|
428
428
|
// any sequence at a lower level will be discarded
|
429
|
-
|
429
|
+
maxLevel = Math.max(maxLevel, callbacks[i].level);
|
430
430
|
|
431
431
|
// keep a list of which sequences were matches for later
|
432
|
-
|
432
|
+
doNotReset[callbacks[i].seq] = 1;
|
433
433
|
_fireCallback(callbacks[i].callback, e, callbacks[i].combo);
|
434
434
|
continue;
|
435
435
|
}
|
436
436
|
|
437
437
|
// if there were no sequence matches but we are still here
|
438
438
|
// that means this is a regular match so we should fire that
|
439
|
-
if (!
|
439
|
+
if (!processedSequenceCallback && !_sequenceType) {
|
440
440
|
_fireCallback(callbacks[i].callback, e, callbacks[i].combo);
|
441
441
|
}
|
442
442
|
}
|
@@ -444,8 +444,8 @@
|
|
444
444
|
// if you are inside of a sequence and the key you are pressing
|
445
445
|
// is not a modifier key then we should reset all sequences
|
446
446
|
// that were not matched by this key event
|
447
|
-
if (e.type ==
|
448
|
-
_resetSequences(
|
447
|
+
if (e.type == _sequenceType && !_isModifier(character)) {
|
448
|
+
_resetSequences(doNotReset, maxLevel);
|
449
449
|
}
|
450
450
|
}
|
451
451
|
|
@@ -470,8 +470,8 @@
|
|
470
470
|
return;
|
471
471
|
}
|
472
472
|
|
473
|
-
if (e.type == 'keyup' &&
|
474
|
-
|
473
|
+
if (e.type == 'keyup' && _ignoreNextKeyup == character) {
|
474
|
+
_ignoreNextKeyup = false;
|
475
475
|
return;
|
476
476
|
}
|
477
477
|
|
@@ -497,8 +497,8 @@
|
|
497
497
|
* @returns void
|
498
498
|
*/
|
499
499
|
function _resetSequenceTimer() {
|
500
|
-
clearTimeout(
|
501
|
-
|
500
|
+
clearTimeout(_resetTimer);
|
501
|
+
_resetTimer = setTimeout(_resetSequences, 1000);
|
502
502
|
}
|
503
503
|
|
504
504
|
/**
|
@@ -563,7 +563,7 @@
|
|
563
563
|
|
564
564
|
// start off by adding a sequence level record for this combination
|
565
565
|
// and setting the level to 0
|
566
|
-
|
566
|
+
_sequenceLevels[combo] = 0;
|
567
567
|
|
568
568
|
// if there is no action pick the best one for the first key
|
569
569
|
// in the sequence
|
@@ -579,8 +579,8 @@
|
|
579
579
|
* @returns void
|
580
580
|
*/
|
581
581
|
var _increaseSequence = function(e) {
|
582
|
-
|
583
|
-
++
|
582
|
+
_sequenceType = action;
|
583
|
+
++_sequenceLevels[combo];
|
584
584
|
_resetSequenceTimer();
|
585
585
|
},
|
586
586
|
|
@@ -598,7 +598,7 @@
|
|
598
598
|
// or keypress. this is so if you finish a sequence and
|
599
599
|
// release the key the final key will not trigger a keyup
|
600
600
|
if (action !== 'keyup') {
|
601
|
-
|
601
|
+
_ignoreNextKeyup = _characterFromEvent(e);
|
602
602
|
}
|
603
603
|
|
604
604
|
// weird race condition if a sequence ends with the key
|
@@ -621,11 +621,14 @@
|
|
621
621
|
* @param {string} combination
|
622
622
|
* @param {Function} callback
|
623
623
|
* @param {string=} action
|
624
|
-
* @param {string=}
|
624
|
+
* @param {string=} sequenceName - name of sequence if part of sequence
|
625
625
|
* @param {number=} level - what part of the sequence the command is
|
626
626
|
* @returns void
|
627
627
|
*/
|
628
|
-
function _bindSingle(combination, callback, action,
|
628
|
+
function _bindSingle(combination, callback, action, sequenceName, level) {
|
629
|
+
|
630
|
+
// store a direct mapped reference for use with Mousetrap.trigger
|
631
|
+
_directMap[combination + ':' + action] = callback;
|
629
632
|
|
630
633
|
// make sure multiple spaces in a row become a single space
|
631
634
|
combination = combination.replace(/\s+/g, ' ');
|
@@ -680,7 +683,7 @@
|
|
680
683
|
}
|
681
684
|
|
682
685
|
// remove an existing match if there is one
|
683
|
-
_getMatches(key, modifiers, {type: action}, !
|
686
|
+
_getMatches(key, modifiers, {type: action}, !sequenceName, combination);
|
684
687
|
|
685
688
|
// add this call back to the array
|
686
689
|
// if it is a sequence put it at the beginning
|
@@ -688,11 +691,11 @@
|
|
688
691
|
//
|
689
692
|
// this is important because the way these are processed expects
|
690
693
|
// the sequence ones to come first
|
691
|
-
_callbacks[key][
|
694
|
+
_callbacks[key][sequenceName ? 'unshift' : 'push']({
|
692
695
|
callback: callback,
|
693
696
|
modifiers: modifiers,
|
694
697
|
action: action,
|
695
|
-
seq:
|
698
|
+
seq: sequenceName,
|
696
699
|
level: level,
|
697
700
|
combo: combination
|
698
701
|
});
|
@@ -734,8 +737,8 @@
|
|
734
737
|
* @returns void
|
735
738
|
*/
|
736
739
|
bind: function(keys, callback, action) {
|
737
|
-
|
738
|
-
|
740
|
+
keys = keys instanceof Array ? keys : [keys];
|
741
|
+
_bindMultiple(keys, callback, action);
|
739
742
|
return this;
|
740
743
|
},
|
741
744
|
|
@@ -744,24 +747,20 @@
|
|
744
747
|
*
|
745
748
|
* the unbinding sets the callback function of the specified key combo
|
746
749
|
* to an empty function and deletes the corresponding key in the
|
747
|
-
*
|
748
|
-
*
|
749
|
-
* the keycombo+action has to be exactly the same as
|
750
|
-
* it was defined in the bind method
|
750
|
+
* _directMap dict.
|
751
751
|
*
|
752
752
|
* TODO: actually remove this from the _callbacks dictionary instead
|
753
753
|
* of binding an empty function
|
754
754
|
*
|
755
|
+
* the keycombo+action has to be exactly the same as
|
756
|
+
* it was defined in the bind method
|
757
|
+
*
|
755
758
|
* @param {string|Array} keys
|
756
759
|
* @param {string} action
|
757
760
|
* @returns void
|
758
761
|
*/
|
759
762
|
unbind: function(keys, action) {
|
760
|
-
|
761
|
-
delete _direct_map[keys + ':' + action];
|
762
|
-
this.bind(keys, function() {}, action);
|
763
|
-
}
|
764
|
-
return this;
|
763
|
+
return Mousetrap.bind(keys, function() {}, action);
|
765
764
|
},
|
766
765
|
|
767
766
|
/**
|
@@ -772,7 +771,9 @@
|
|
772
771
|
* @returns void
|
773
772
|
*/
|
774
773
|
trigger: function(keys, action) {
|
775
|
-
|
774
|
+
if (_directMap[keys + ':' + action]) {
|
775
|
+
_directMap[keys + ':' + action]();
|
776
|
+
}
|
776
777
|
return this;
|
777
778
|
},
|
778
779
|
|
@@ -785,7 +786,7 @@
|
|
785
786
|
*/
|
786
787
|
reset: function() {
|
787
788
|
_callbacks = {};
|
788
|
-
|
789
|
+
_directMap = {};
|
789
790
|
return this;
|
790
791
|
},
|
791
792
|
|
metadata
CHANGED
@@ -1,15 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mousetrap-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.8
|
5
4
|
prerelease:
|
5
|
+
version: 0.0.9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Nick Kugaevsky
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
|
-
cert_chain:
|
12
|
-
|
11
|
+
cert_chain:
|
12
|
+
- !binary |-
|
13
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURNRENDQWhpZ0F3SUJB
|
14
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREErTVEwd0N3WURWUVFEREFSdWFX
|
15
|
+
TnIKTVJrd0Z3WUtDWkltaVpQeUxHUUJHUllKYTNWbllXVjJjMnQ1TVJJd0VB
|
16
|
+
WUtDWkltaVpQeUxHUUJHUllDY25VdwpIaGNOTVRNd01UTXhNVGd4TWpNd1do
|
17
|
+
Y05NVFF3TVRNeE1UZ3hNak13V2pBK01RMHdDd1lEVlFRRERBUnVhV05yCk1S
|
18
|
+
a3dGd1lLQ1pJbWlaUHlMR1FCR1JZSmEzVm5ZV1YyYzJ0NU1SSXdFQVlLQ1pJ
|
19
|
+
bWlaUHlMR1FCR1JZQ2NuVXcKZ2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJ
|
20
|
+
QkR3QXdnZ0VLQW9JQkFRQzNTUzAxcnNJNU4zRVVHM2JTbmZJMgpwcjRFeHg5
|
21
|
+
Z0tDQlM1SXhWN090K3BRMnBzSWlXb2VuYVM0ZlMyZnNtdmxlOTJDbEV4M05i
|
22
|
+
VXFueHhHREVTMEViCkZrTkh5QUg5VndPMzZ2UzBsb052L094MnNTYWxlVU5W
|
23
|
+
M0pkdmNQMUdtM3hHdG45S1dOY3B1QXdQZk1sNUJTWWcKSzRXVTh6SWtiTGx3
|
24
|
+
bXJPNmg4NUlZWnJEd3FnaGI2T0NPd2hiNTZkNGJ5am9KRTI1YnJVeEVUeEdW
|
25
|
+
ZHN1VkNEcgpFUXJvUytEMkJpTUFFZHdKY24vUGVwTXgzbHQrdGVacmpVb2Vp
|
26
|
+
NVVYSWNuWjI4VVlTbm1Yalhua3lTbFBYelJWCnNpTHdVTUFnR3U2NjVodVVF
|
27
|
+
NVM4aWRXN29oU0hUSnYva0g5OEJvaVdpN2dpOUhGTXo0T0pNTWVSNXJaazc2
|
28
|
+
UWwKQWdNQkFBR2pPVEEzTUFrR0ExVWRFd1FDTUFBd0hRWURWUjBPQkJZRUZD
|
29
|
+
ZElLa0I5bForY29tMHdMQmhMUURXZQpZbmJ2TUFzR0ExVWREd1FFQXdJRXNE
|
30
|
+
QU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFOT3ViRmRkcHpNWEpmbFB2CnZY
|
31
|
+
WG5XWFl2WksyZXRTeHp3ZXdYWE9oY2J6d1N4ZFUwVDROYktjcmxobEZialVE
|
32
|
+
aC94RjRRemMxZEI5T0ZHOXIKZmZJVUt2MEp0RXlHTS9tT2FJU3NOcCtvWVVs
|
33
|
+
WHhYTE5Pc1g4TFQxciszMzd0UTYyN0dvWC9aMFJMNXU4TXo2UQpLWlVKaEdR
|
34
|
+
S05uSXA2Umt6NnNwNFpoMmFxVEx0OEJERUE4NmtPKzB2NExhVkxxRkVtTFR5
|
35
|
+
cGY3QzU2OFJUWWxtCk44TGFSRVFNTTVZZHZDSVlXczVDNmlOUlZhRGhUOGJr
|
36
|
+
dVdOaHRCaXMwSDdZRkFmc1cxcm45bnA4T1E3blkyYXoKOGROUXJCbEt6Yy9S
|
37
|
+
THdHR0ZUMWdqelZsSWI3L3h0TmRNZEpRNkp3eWxqU0o3MFBiS0FBemdCUmRE
|
38
|
+
TFB0OUJXdAozQUg5bXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
39
|
+
date: 2013-02-08 00:00:00.000000000 Z
|
13
40
|
dependencies:
|
14
41
|
- !ruby/object:Gem::Dependency
|
15
42
|
name: rails
|
@@ -18,15 +45,15 @@ dependencies:
|
|
18
45
|
requirements:
|
19
46
|
- - ~>
|
20
47
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.2.
|
48
|
+
version: 3.2.11
|
22
49
|
type: :development
|
23
|
-
prerelease: false
|
24
50
|
version_requirements: !ruby/object:Gem::Requirement
|
25
51
|
none: false
|
26
52
|
requirements:
|
27
53
|
- - ~>
|
28
54
|
- !ruby/object:Gem::Version
|
29
|
-
version: 3.2.
|
55
|
+
version: 3.2.11
|
56
|
+
prerelease: false
|
30
57
|
- !ruby/object:Gem::Dependency
|
31
58
|
name: sqlite3
|
32
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -36,13 +63,13 @@ dependencies:
|
|
36
63
|
- !ruby/object:Gem::Version
|
37
64
|
version: 1.3.5
|
38
65
|
type: :development
|
39
|
-
prerelease: false
|
40
66
|
version_requirements: !ruby/object:Gem::Requirement
|
41
67
|
none: false
|
42
68
|
requirements:
|
43
69
|
- - ~>
|
44
70
|
- !ruby/object:Gem::Version
|
45
71
|
version: 1.3.5
|
72
|
+
prerelease: false
|
46
73
|
- !ruby/object:Gem::Dependency
|
47
74
|
name: rspec-rails
|
48
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,13 +79,13 @@ dependencies:
|
|
52
79
|
- !ruby/object:Gem::Version
|
53
80
|
version: 2.12.0
|
54
81
|
type: :development
|
55
|
-
prerelease: false
|
56
82
|
version_requirements: !ruby/object:Gem::Requirement
|
57
83
|
none: false
|
58
84
|
requirements:
|
59
85
|
- - ~>
|
60
86
|
- !ruby/object:Gem::Version
|
61
87
|
version: 2.12.0
|
88
|
+
prerelease: false
|
62
89
|
- !ruby/object:Gem::Dependency
|
63
90
|
name: genspec
|
64
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,13 +95,13 @@ dependencies:
|
|
68
95
|
- !ruby/object:Gem::Version
|
69
96
|
version: 0.2.7
|
70
97
|
type: :development
|
71
|
-
prerelease: false
|
72
98
|
version_requirements: !ruby/object:Gem::Requirement
|
73
99
|
none: false
|
74
100
|
requirements:
|
75
101
|
- - ~>
|
76
102
|
- !ruby/object:Gem::Version
|
77
103
|
version: 0.2.7
|
104
|
+
prerelease: false
|
78
105
|
- !ruby/object:Gem::Dependency
|
79
106
|
name: sass
|
80
107
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,13 +111,13 @@ dependencies:
|
|
84
111
|
- !ruby/object:Gem::Version
|
85
112
|
version: 3.2.1
|
86
113
|
type: :development
|
87
|
-
prerelease: false
|
88
114
|
version_requirements: !ruby/object:Gem::Requirement
|
89
115
|
none: false
|
90
116
|
requirements:
|
91
117
|
- - ~>
|
92
118
|
- !ruby/object:Gem::Version
|
93
119
|
version: 3.2.1
|
120
|
+
prerelease: false
|
94
121
|
description: Mousetrap is a javascript library for handling keyboard shortcuts in
|
95
122
|
your web applications. This gem integrates Mousetrap with Rails asset pipeline for
|
96
123
|
easy of use.
|
@@ -109,6 +136,7 @@ files:
|
|
109
136
|
- Rakefile
|
110
137
|
- app/assets/stylesheets/mousetrap.css
|
111
138
|
- app/assets/stylesheets/mousetrap.css.sass
|
139
|
+
- gem-public_cert.pem
|
112
140
|
- lib/generators/mousetrap/install/USAGE
|
113
141
|
- lib/generators/mousetrap/install/install_generator.rb
|
114
142
|
- lib/generators/mousetrap/install/templates/application.css
|
@@ -172,19 +200,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
172
200
|
requirements:
|
173
201
|
- - ! '>='
|
174
202
|
- !ruby/object:Gem::Version
|
175
|
-
version: '0'
|
176
203
|
segments:
|
177
204
|
- 0
|
178
|
-
hash:
|
205
|
+
hash: 3850591978535415950
|
206
|
+
version: '0'
|
179
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
208
|
none: false
|
181
209
|
requirements:
|
182
210
|
- - ! '>='
|
183
211
|
- !ruby/object:Gem::Version
|
184
|
-
version: '0'
|
185
212
|
segments:
|
186
213
|
- 0
|
187
|
-
hash:
|
214
|
+
hash: 3850591978535415950
|
215
|
+
version: '0'
|
188
216
|
requirements: []
|
189
217
|
rubyforge_project:
|
190
218
|
rubygems_version: 1.8.24
|
metadata.gz.sig
ADDED
Binary file
|