jquery-slimscroll-rails 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in jquery-slimscroll-rails.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Marcos Nogueira
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Jquery::Slimscroll::Rails
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'jquery-slimscroll-rails'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install jquery-slimscroll-rails
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'jquery-slimscroll-rails/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "jquery-slimscroll-rails"
8
+ gem.version = Jquery::Slimscroll::Rails::VERSION
9
+ gem.authors = ["Marcos Nogueira"]
10
+ gem.email = ["marcosnogueiraalves@gmail.com"]
11
+ gem.description = %q{slimScroll is a small (3.7KB) jQuery plugin that transforms any div into a scrollable area with a nice scrollbar - similar to the one Facebook and Google started using in their products recently. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over. User can drag the scrollbar or use mouse-wheel to change the scroll value.}
12
+ gem.summary = %q{Integrate the jQuery SlimScroll plugin into the Rails asset pipeline}
13
+ gem.homepage = "http://github.com/marcosnogueira/jquery-slimscroll-rails"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ end
@@ -0,0 +1,9 @@
1
+ require "jquery-slimscroll-rails/version"
2
+
3
+ module Jquery
4
+ module Slimscroll
5
+ module Rails
6
+ require "jquery-slimscroll-rails/engine"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ module Slimscroll
2
+ module Rails
3
+ class Engine < ::Rails::Engine
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ module Jquery
2
+ module Slimscroll
3
+ module Rails
4
+ VERSION = "1.0.9"
5
+ end
6
+ end
7
+ end
Binary file
Binary file
@@ -0,0 +1,378 @@
1
+ /*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
2
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
3
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
4
+ *
5
+ * Version: 1.0.9
6
+ *
7
+ */
8
+ (function($) {
9
+
10
+ jQuery.fn.extend({
11
+ slimScroll: function(options) {
12
+
13
+ var defaults = {
14
+ wheelStep : 20,
15
+ width : 'auto',
16
+ height : '250px',
17
+ size : '7px',
18
+ color: '#000',
19
+ position : 'right',
20
+ distance : '1px',
21
+ start : 'top',
22
+ opacity : .4,
23
+ alwaysVisible : false,
24
+ disableFadeOut: false,
25
+ railVisible : false,
26
+ railColor : '#333',
27
+ railOpacity : '0.2',
28
+ railClass : 'slimScrollRail',
29
+ barClass : 'slimScrollBar',
30
+ wrapperClass : 'slimScrollDiv',
31
+ allowPageScroll : false,
32
+ scroll : 0,
33
+ touchScrollStep : 200
34
+ };
35
+
36
+ var o = $.extend(defaults, options);
37
+
38
+ // do it for every element that matches selector
39
+ this.each(function(){
40
+
41
+ var isOverPanel, isOverBar, isDragg, queueHide, touchDif,
42
+ barHeight, percentScroll, lastScroll,
43
+ divS = '<div></div>',
44
+ minBarHeight = 30,
45
+ releaseScroll = false;
46
+
47
+ // used in event handlers and for better minification
48
+ var me = $(this);
49
+
50
+ // ensure we are not binding it again
51
+ if (me.parent().hasClass('slimScrollDiv'))
52
+ {
53
+ // start from last bar position
54
+ var offset = me.scrollTop();
55
+
56
+ // find bar and rail
57
+ bar = me.parent().find('.slimScrollBar');
58
+ rail = me.parent().find('.slimScrollRail');
59
+
60
+ getBarHeight();
61
+
62
+ // check if we should scroll existing instance
63
+ if (options)
64
+ {
65
+ if ('scrollTo' in options)
66
+ {
67
+ // jump to a static point
68
+ offset = parseInt(o.scrollTo);
69
+ }
70
+ else if ('scrollBy' in options)
71
+ {
72
+ // jump by value pixels
73
+ offset += parseInt(o.scrollBy);
74
+ }
75
+ else if ('destroy' in options)
76
+ {
77
+ // remove slimscroll elements
78
+ bar.remove();
79
+ rail.remove();
80
+ me.unwrap();
81
+ return;
82
+ }
83
+
84
+ // scroll content by the given offset
85
+ scrollContent(offset, false, true);
86
+ }
87
+
88
+ return;
89
+ }
90
+
91
+ // optionally set height to the parent's height
92
+ o.height = (o.height == 'auto') ? me.parent().innerHeight() : o.height;
93
+
94
+ // wrap content
95
+ var wrapper = $(divS)
96
+ .addClass(o.wrapperClass)
97
+ .css({
98
+ position: 'relative',
99
+ overflow: 'hidden',
100
+ width: o.width,
101
+ height: o.height
102
+ });
103
+
104
+ // update style for the div
105
+ me.css({
106
+ overflow: 'hidden',
107
+ width: o.width,
108
+ height: o.height
109
+ });
110
+
111
+ // create scrollbar rail
112
+ var rail = $(divS)
113
+ .addClass(o.railClass)
114
+ .css({
115
+ width: o.size,
116
+ height: '100%',
117
+ position: 'absolute',
118
+ top: 0,
119
+ display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none',
120
+ 'border-radius': o.size,
121
+ background: o.railColor,
122
+ opacity: o.railOpacity,
123
+ zIndex: 90
124
+ });
125
+
126
+ // create scrollbar
127
+ var bar = $(divS)
128
+ .addClass(o.barClass)
129
+ .css({
130
+ background: o.color,
131
+ width: o.size,
132
+ position: 'absolute',
133
+ top: 0,
134
+ opacity: o.opacity,
135
+ display: o.alwaysVisible ? 'block' : 'none',
136
+ 'border-radius' : o.size,
137
+ BorderRadius: o.size,
138
+ MozBorderRadius: o.size,
139
+ WebkitBorderRadius: o.size,
140
+ zIndex: 99
141
+ });
142
+
143
+ // set position
144
+ var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance };
145
+ rail.css(posCss);
146
+ bar.css(posCss);
147
+
148
+ // wrap it
149
+ me.wrap(wrapper);
150
+
151
+ // append to parent div
152
+ me.parent().append(bar);
153
+ me.parent().append(rail);
154
+
155
+ // make it draggable
156
+ bar.draggable({
157
+ axis: 'y',
158
+ containment: 'parent',
159
+ start: function() { isDragg = true; },
160
+ stop: function() { isDragg = false; hideBar(); },
161
+ drag: function(e)
162
+ {
163
+ // scroll content
164
+ scrollContent(0, $(this).position().top, false);
165
+ }
166
+ });
167
+
168
+ // on rail over
169
+ rail.hover(function(){
170
+ showBar();
171
+ }, function(){
172
+ hideBar();
173
+ });
174
+
175
+ // on bar over
176
+ bar.hover(function(){
177
+ isOverBar = true;
178
+ }, function(){
179
+ isOverBar = false;
180
+ });
181
+
182
+ // show on parent mouseover
183
+ me.hover(function(){
184
+ isOverPanel = true;
185
+ showBar();
186
+ hideBar();
187
+ }, function(){
188
+ isOverPanel = false;
189
+ hideBar();
190
+ });
191
+
192
+ // support for mobile
193
+ me.bind('touchstart', function(e,b){
194
+ if (e.originalEvent.touches.length)
195
+ {
196
+ // record where touch started
197
+ touchDif = e.originalEvent.touches[0].pageY;
198
+ }
199
+ });
200
+
201
+ me.bind('touchmove', function(e){
202
+ // prevent scrolling the page
203
+ e.originalEvent.preventDefault();
204
+ if (e.originalEvent.touches.length)
205
+ {
206
+ // see how far user swiped
207
+ var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep;
208
+ // scroll content
209
+ scrollContent(diff, true);
210
+ }
211
+ });
212
+
213
+ var _onWheel = function(e)
214
+ {
215
+ // use mouse wheel only when mouse is over
216
+ if (!isOverPanel) { return; }
217
+
218
+ var e = e || window.event;
219
+
220
+ var delta = 0;
221
+ if (e.wheelDelta) { delta = -e.wheelDelta/120; }
222
+ if (e.detail) { delta = e.detail / 3; }
223
+
224
+ var target = e.target || e.srcTarget;
225
+ if ($(target).closest('.' + o.wrapperClass).is(me.parent())) {
226
+ // scroll content
227
+ scrollContent(delta, true);
228
+ }
229
+
230
+ // stop window scroll
231
+ if (e.preventDefault && !releaseScroll) { e.preventDefault(); }
232
+ if (!releaseScroll) { e.returnValue = false; }
233
+ }
234
+
235
+ function scrollContent(y, isWheel, isJump)
236
+ {
237
+ var delta = y;
238
+ var maxTop = me.outerHeight() - bar.outerHeight();
239
+
240
+ if (isWheel)
241
+ {
242
+ // move bar with mouse wheel
243
+ delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight();
244
+
245
+ // move bar, make sure it doesn't go out
246
+ delta = Math.min(Math.max(delta, 0), maxTop);
247
+
248
+ // if scrolling down, make sure a fractional change to the
249
+ // scroll position isn't rounded away when the scrollbar's CSS is set
250
+ // this flooring of delta would happened automatically when
251
+ // bar.css is set below, but we floor here for clarity
252
+ delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta);
253
+
254
+ // scroll the scrollbar
255
+ bar.css({ top: delta + 'px' });
256
+ }
257
+
258
+ // calculate actual scroll amount
259
+ percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight());
260
+ delta = percentScroll * (me[0].scrollHeight - me.outerHeight());
261
+
262
+ if (isJump)
263
+ {
264
+ delta = y;
265
+ var offsetTop = delta / me[0].scrollHeight * me.outerHeight();
266
+ offsetTop = Math.min(Math.max(offsetTop, 0), maxTop);
267
+ bar.css({ top: offsetTop + 'px' });
268
+ }
269
+
270
+ // scroll content
271
+ me.scrollTop(delta);
272
+
273
+ // ensure bar is visible
274
+ showBar();
275
+
276
+ // trigger hide when scroll is stopped
277
+ hideBar();
278
+ }
279
+
280
+ var attachWheel = function()
281
+ {
282
+ if (window.addEventListener)
283
+ {
284
+ this.addEventListener('DOMMouseScroll', _onWheel, false );
285
+ this.addEventListener('mousewheel', _onWheel, false );
286
+ }
287
+ else
288
+ {
289
+ document.attachEvent("onmousewheel", _onWheel)
290
+ }
291
+ }
292
+
293
+ // attach scroll events
294
+ attachWheel();
295
+
296
+ function getBarHeight()
297
+ {
298
+ // calculate scrollbar height and make sure it is not too small
299
+ barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight);
300
+ bar.css({ height: barHeight + 'px' });
301
+ }
302
+
303
+ // set up initial height
304
+ getBarHeight();
305
+
306
+ function showBar()
307
+ {
308
+ // recalculate bar height
309
+ getBarHeight();
310
+ clearTimeout(queueHide);
311
+
312
+ // when bar reached top or bottom
313
+ if (percentScroll == ~~ percentScroll)
314
+ {
315
+ //release wheel
316
+ releaseScroll = o.allowPageScroll;
317
+
318
+ // publish approporiate event
319
+ if (lastScroll != percentScroll)
320
+ {
321
+ var msg = (~~percentScroll == 0) ? 'top' : 'bottom';
322
+ me.trigger('slimscroll', msg);
323
+ }
324
+ }
325
+ lastScroll = percentScroll;
326
+
327
+ // show only when required
328
+ if(barHeight >= me.outerHeight()) {
329
+ //allow window scroll
330
+ releaseScroll = true;
331
+ return;
332
+ }
333
+ bar.stop(true,true).fadeIn('fast');
334
+ if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); }
335
+ }
336
+
337
+ function hideBar()
338
+ {
339
+ // only hide when options allow it
340
+ if (!o.alwaysVisible)
341
+ {
342
+ queueHide = setTimeout(function(){
343
+ if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg)
344
+ {
345
+ bar.fadeOut('slow');
346
+ rail.fadeOut('slow');
347
+ }
348
+ }, 1000);
349
+ }
350
+ }
351
+
352
+ // check start position
353
+ if (o.start == 'bottom')
354
+ {
355
+ // scroll content to bottom
356
+ bar.css({ top: me.outerHeight() - bar.outerHeight() });
357
+ scrollContent(0, true);
358
+ }
359
+ else if (typeof o.start == 'object')
360
+ {
361
+ // scroll content
362
+ scrollContent($(o.start).position().top, null, true);
363
+
364
+ // make sure bar stays hidden
365
+ if (!o.alwaysVisible) { bar.hide(); }
366
+ }
367
+ });
368
+
369
+ // maintain chainability
370
+ return this;
371
+ }
372
+ });
373
+
374
+ jQuery.fn.extend({
375
+ slimscroll: jQuery.fn.slimScroll
376
+ });
377
+
378
+ })(jQuery);
@@ -0,0 +1,15 @@
1
+ /*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
2
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
3
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
4
+ *
5
+ * Version: 1.0.9
6
+ *
7
+ */
8
+ (function(f){jQuery.fn.extend({slimScroll:function(l){var a=f.extend({wheelStep:20,width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:0.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:"0.2",railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,scroll:0,touchScrollStep:200},l);this.each(function(){function g(d,f,h){var e=d,g=b.outerHeight()-c.outerHeight();f&&(e=parseInt(c.css("top"))+
9
+ d*parseInt(a.wheelStep)/100*c.outerHeight(),e=Math.min(Math.max(e,0),g),e=0<d?Math.ceil(e):Math.floor(e),c.css({top:e+"px"}));j=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight());e=j*(b[0].scrollHeight-b.outerHeight());h&&(e=d,d=e/b[0].scrollHeight*b.outerHeight(),d=Math.min(Math.max(d,0),g),c.css({top:d+"px"}));b.scrollTop(e);q();m()}function r(){s=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),A);c.css({height:s+"px"})}function q(){r();clearTimeout(w);j==~~j&&(n=a.allowPageScroll,
10
+ x!=j&&b.trigger("slimscroll",0==~~j?"top":"bottom"));x=j;s>=b.outerHeight()?n=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&h.stop(!0,!0).fadeIn("fast"))}function m(){a.alwaysVisible||(w=setTimeout(function(){if((!a.disableFadeOut||!p)&&!t&&!u)c.fadeOut("slow"),h.fadeOut("slow")},1E3))}var p,t,u,w,y,s,j,x,A=30,n=!1,b=f(this);if(b.parent().hasClass("slimScrollDiv")){var k=b.scrollTop(),c=b.parent().find(".slimScrollBar"),h=b.parent().find(".slimScrollRail");r();if(l){if("scrollTo"in l)k=parseInt(a.scrollTo);
11
+ else if("scrollBy"in l)k+=parseInt(a.scrollBy);else if("destroy"in l){c.remove();h.remove();b.unwrap();return}g(k,!1,!0)}}else{a.height="auto"==a.height?b.parent().innerHeight():a.height;k=f("<div></div>").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",width:a.width,height:a.height});var h=f("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?
12
+ "block":"none","border-radius":a.size,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=f("<div></div>").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.size,BorderRadius:a.size,MozBorderRadius:a.size,WebkitBorderRadius:a.size,zIndex:99}),z="right"==a.position?{right:a.distance}:{left:a.distance};h.css(z);c.css(z);b.wrap(k);b.parent().append(c);b.parent().append(h);c.draggable({axis:"y",
13
+ containment:"parent",start:function(){u=!0},stop:function(){u=!1;m()},drag:function(){g(0,f(this).position().top,!1)}});h.hover(function(){q()},function(){m()});c.hover(function(){t=!0},function(){t=!1});b.hover(function(){p=!0;q();m()},function(){p=!1;m()});b.bind("touchstart",function(a){a.originalEvent.touches.length&&(y=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){b.originalEvent.preventDefault();b.originalEvent.touches.length&&g((y-b.originalEvent.touches[0].pageY)/a.touchScrollStep,
14
+ !0)});var v=function(d){if(p){d=d||window.event;var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);f(d.target||d.srcTarget).closest("."+a.wrapperClass).is(b.parent())&&g(c,!0);d.preventDefault&&!n&&d.preventDefault();n||(d.returnValue=!1)}};(function(){window.addEventListener?(this.addEventListener("DOMMouseScroll",v,!1),this.addEventListener("mousewheel",v,!1)):document.attachEvent("onmousewheel",v)})();r();"bottom"==a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),g(0,!0)):
15
+ "object"==typeof a.start&&(g(f(a.start).position().top,null,!0),a.alwaysVisible||c.hide())}});return this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery);
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jquery-slimscroll-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.9
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Marcos Nogueira
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-07 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: slimScroll is a small (3.7KB) jQuery plugin that transforms any div into
15
+ a scrollable area with a nice scrollbar - similar to the one Facebook and Google
16
+ started using in their products recently. slimScroll doesn't occupy any visual space
17
+ as it only appears on a user initiated mouse-over. User can drag the scrollbar or
18
+ use mouse-wheel to change the scroll value.
19
+ email:
20
+ - marcosnogueiraalves@gmail.com
21
+ executables: []
22
+ extensions: []
23
+ extra_rdoc_files: []
24
+ files:
25
+ - .DS_Store
26
+ - .gitignore
27
+ - Gemfile
28
+ - LICENSE.txt
29
+ - README.md
30
+ - Rakefile
31
+ - jquery-slimscroll-rails.gemspec
32
+ - lib/jquery-slimscroll-rails.rb
33
+ - lib/jquery-slimscroll-rails/engine.rb
34
+ - lib/jquery-slimscroll-rails/version.rb
35
+ - vendor/.DS_Store
36
+ - vendor/assets/.DS_Store
37
+ - vendor/assets/javascripts/jquery.slimscroll.js
38
+ - vendor/assets/javascripts/jquery.slimscroll.min.js
39
+ homepage: http://github.com/marcosnogueira/jquery-slimscroll-rails
40
+ licenses: []
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ requirements: []
58
+ rubyforge_project:
59
+ rubygems_version: 1.8.24
60
+ signing_key:
61
+ specification_version: 3
62
+ summary: Integrate the jQuery SlimScroll plugin into the Rails asset pipeline
63
+ test_files: []