scrollreveal-rails 0.0.1

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZWNiOTY0ZGU4MTBjODA3YmEyYjFiYTRlYTdmMDBkZjc4MzM4YjIwZg==
5
+ data.tar.gz: !binary |-
6
+ NGNhYTA4ZGJjMzVjYzI0ZjJlODUxNWFlYzExOGM4MmJiODY0YjJmYw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MWE2MzhjM2JkOTMzNTllMjkwOTQ2N2U4OTY2NjlkMGRmZTU3NmE1NDY0ZWZk
10
+ YjNkYzYyNjQ2YjNkMTZkZGY0NzA4YjllMjMyOWE4NTdjMTY0NTc5YmM1Mjkz
11
+ YWE4MWU0ODViYTY0NWRlODJlNjgxYjU3Mzc0MGE3Yjg4NTMyYzk=
12
+ data.tar.gz: !binary |-
13
+ MGRmNTNjMDAwZTVhZGFmMTdiODQ3ZGUzMWY3NTkwZmI2OGM0MjcyYzJiZDhm
14
+ NzU0NTlkODNhNDAwN2NmNzhkMjFlMTgzYzI4ZTNlNTQ4NGYzOThmMjcyMDQ4
15
+ ZjAzNTM4Nzg3MTYwNmM5YTFjYTEwNzViMzEzMDQxYzJkMjlhNDk=
@@ -0,0 +1,7 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ sauce
6
+ tmp
7
+ .DS_Store
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
@@ -0,0 +1,4 @@
1
+ # 0.0.1 / 2013-11-10
2
+
3
+ Scrollreveal gearing up!
4
+
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+ gemspec
@@ -0,0 +1,5 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ task :default do
4
+ puts "Hello scrollreveal-rails!"
5
+ end
@@ -0,0 +1,134 @@
1
+ # Scrollreveal-Rails
2
+
3
+ A Ruby wrapper to integrate [scrollReveal](https://github.com/julianlloyd/scrollReveal.js) - A small library to create and maintain how elements fade in, triggered when they enter the viewport.
4
+
5
+
6
+ See the [demo application](http://fast-waters-6745.herokuapp.com) in action.
7
+ ## Installation
8
+
9
+ Add the gem to the Gemfile:
10
+
11
+ gem "scrollreveal-rails"
12
+
13
+ ## Usage
14
+
15
+ Add ScrollReveal to your JS
16
+ Append the following lines to your app/assets/javascripts/application.js file:
17
+
18
+ //= require scrollReveal
19
+
20
+ $(function() {
21
+ window.scrollReveal = new scrollReveal();
22
+ });
23
+
24
+
25
+ Basic Usage
26
+ -----------
27
+
28
+ In your view `*.html.erb` or `*.html.haml`
29
+
30
+ <!-- Reveal using defaults. -->
31
+ scroll_reveal content: 'Holla!'
32
+
33
+ **But wait!** It’s more fun if you define your own reveal animation parameters, which you can do using using natural, declarative language:
34
+
35
+ <!-- Reveal using custom parameters. -->
36
+ scroll_reveal content: 'Foo', animation: 'enter left and move 50px over 1.33s'
37
+ scroll_reveal content: 'Bar', animation: 'enter from the bottom after 1s'
38
+ scroll_reveal content: 'Baz' animation: 'wait 2.5s and then ease-in-out 100px'
39
+
40
+ Getting Started
41
+ ---------------
42
+ What you enter into the `data-scrollReveal` attribute is parsed for specific words:
43
+
44
+ - **keywords** that expect to be followed by a **value**.<br><br>
45
+ - **fillers** as natural language sugar. (optional)
46
+
47
+ #### Keywords and Values
48
+ These specific **keyword** / **value** pairs allow you to describe basic reveal animation behavior.
49
+ ***
50
+ **keyword:** `enter` — Controls the vector origin of your reveal animation.<br>
51
+ **value:** `top` | `right` | `bottom` | `left`<br><br>
52
+ *Example:*
53
+
54
+ <!-- Reveal your element with a downward motion. -->
55
+
56
+ scroll_reveal content: 'Foo', animation: 'enter top'
57
+
58
+ ***
59
+ **keyword:** `move` — The distance your revealing element travels.<br>
60
+ **value:** [ integer ]px.
61
+
62
+ *Example:*
63
+
64
+ scroll_reveal content: 'Foo', animation: 'move 24px'
65
+
66
+ ***
67
+ **keyword:** `over` — The duration of your reveal animation.<br>
68
+ **value:** [ decimal ]s
69
+
70
+
71
+ *Example:*
72
+
73
+ scroll_reveal content: 'Foo', animation: 'over 1.66s'
74
+
75
+ ***
76
+ **keyword:** `after/wait` — The duration before your reveal begins.<br>
77
+ **value:** [ decimal ]s
78
+
79
+
80
+ *Example:*
81
+
82
+ <!-- Both are accepted. -->
83
+
84
+ scroll_reveal content: 'Mel', animation: 'after 0.33s'
85
+ scroll_reveal content: 'Mel', animation: 'wait 0.33s'
86
+
87
+ ####Combining Keyword/Value Pairs
88
+ You can easily combine the above pairs to create more dynamic reveal animations.
89
+
90
+ *Example:*
91
+
92
+ scroll_reveal content: 'Foo', animation: 'enter top move 50px'
93
+ scroll_reveal content: 'Bar', animation: 'enter top move 50px, after 0.3s'
94
+ scroll_reveal content: 'Baz', animation: 'enter top move 50px, after 0.6s'
95
+ scroll_reveal content: 'Mel', animation: 'enter top move 50px, after 0.9s'
96
+
97
+ ####Passing Blocks
98
+ You can easily pass a block too.
99
+
100
+ *Example:*
101
+
102
+ scroll_reveal animation: 'enter top move 50px' do
103
+ image_tag 'foo.jpg'
104
+ end
105
+
106
+
107
+ #### Fillers (optional)
108
+ You can use conjoining filler words for more readable language.
109
+
110
+ - `from`
111
+ - `the`
112
+ - `and`
113
+ - `then`
114
+ - `but`
115
+ - `with`
116
+ - `,`
117
+
118
+ *Example*:
119
+
120
+ <!-- These 4 lines are equivalent. -->
121
+
122
+ scroll_reveal content: 'Foo', animation: 'wait 0.3s, then enter left and move 40px over 2s'
123
+ scroll_reveal content: 'Bar', animation: 'enter from the left after 0.3s, move 40px, over 2s'
124
+ scroll_reveal content: 'Baz', animation: 'enter left move 40px over 2s after 0.3s'
125
+ scroll_reveal content: 'Mel', animation: 'enter left, move 40px, over 2s, wait 0.3s'
126
+
127
+
128
+ ## Licensing
129
+
130
+
131
+ The gem itself is released under the MIT license
132
+
133
+ :pray:
134
+
@@ -0,0 +1,358 @@
1
+ /*
2
+ _ _ _____ _ _
3
+ | | | __ \ | | (_)
4
+ ___ ___ _ __ ___ | | | |__) |_____ _____ __ _| | _ ___
5
+ / __|/ __| '__/ _ \| | | _ // _ \ \ / / _ \/ _` | | | / __|
6
+ \__ \ (__| | | (_) | | | | \ \ __/\ V / __/ (_| | |_| \__ \
7
+ |___/\___|_| \___/|_|_|_| \_\___| \_/ \___|\__,_|_(_) |___/ v.0.0.2
8
+ _/ |
9
+ |__/
10
+
11
+ "Declarative on-scroll reveal animations."
12
+
13
+ /*=============================================================================
14
+
15
+ scrollReveal.js was inspired by cbpScroller.js (c) 2014 Codrops.
16
+
17
+ Licensed under the MIT license.
18
+ http://www.opensource.org/licenses/mit-license.php
19
+
20
+ scrollReveal.js (c) 2014 Julian Lloyd
21
+
22
+ =============================================================================*/
23
+
24
+ window.scrollReveal = (function (window) {
25
+
26
+ 'use strict';
27
+
28
+ function scrollReveal(options) {
29
+
30
+ this.docElem = window.document.documentElement;
31
+ this.options = this.extend(this.defaults, options);
32
+
33
+ if (this.options.init == true) this.init();
34
+ }
35
+
36
+ scrollReveal.prototype = {
37
+
38
+ defaults: {
39
+ after: '0s',
40
+ enter: 'bottom',
41
+ move: '24px',
42
+ over: '0.66s',
43
+ easing: 'ease-in-out',
44
+
45
+ // if 0, the element is considered in the viewport as soon as it enters
46
+ // if 1, the element is considered in the viewport when it's fully visible
47
+ viewportFactor: 0.33,
48
+
49
+ // if false, animations occur only once
50
+ // if true, animations occur each time an element enters the viewport
51
+ reset: false,
52
+
53
+ // if true, scrollReveal.init() is automaticaly called upon instantiation
54
+ init: true
55
+ },
56
+
57
+ /*=============================================================================*/
58
+
59
+ init: function () {
60
+
61
+ this.scrolled = false;
62
+
63
+ var self = this;
64
+
65
+ // Check DOM for the data-scrollReveal attribute
66
+ // and initialize all found elements.
67
+ this.elems = Array.prototype.slice.call(this.docElem.querySelectorAll('[data-scrollReveal]'));
68
+ this.elems.forEach(function (el, i) {
69
+ self.update(el);
70
+ });
71
+
72
+ var scrollHandler = function () {
73
+ if (!self.scrolled) {
74
+ self.scrolled = true;
75
+ setTimeout(function () {
76
+ self._scrollPage();
77
+ }, 60);
78
+ }
79
+ };
80
+
81
+ var resizeHandler = function () {
82
+
83
+ // If we’re still waiting for settimeout, reset the timer.
84
+ if (self.resizeTimeout) {
85
+ clearTimeout(self.resizeTimeout);
86
+ }
87
+ function delayed() {
88
+ self._scrollPage();
89
+ self.resizeTimeout = null;
90
+ }
91
+ self.resizeTimeout = setTimeout(delayed, 200);
92
+ };
93
+
94
+ window.addEventListener('scroll', scrollHandler, false);
95
+ window.addEventListener('resize', resizeHandler, false);
96
+ },
97
+
98
+ /*=============================================================================*/
99
+
100
+ _scrollPage: function () {
101
+ var self = this;
102
+
103
+ this.elems.forEach(function (el, i) {
104
+ self.update(el);
105
+ });
106
+ this.scrolled = false;
107
+ },
108
+
109
+ /*=============================================================================*/
110
+
111
+ parseLanguage: function (el) {
112
+
113
+ // Splits on a sequence of one or more commas or spaces.
114
+ var words = el.getAttribute('data-scrollreveal').split(/[, ]+/),
115
+ parsed = {};
116
+
117
+ function filter (words) {
118
+ var ret = [],
119
+
120
+ blacklist = [
121
+ "from",
122
+ "the",
123
+ "and",
124
+ "then",
125
+ "but",
126
+ "with"
127
+ ];
128
+
129
+ words.forEach(function (word, i) {
130
+ if (blacklist.indexOf(word) > -1) {
131
+ return;
132
+ }
133
+ ret.push(word);
134
+ });
135
+
136
+ return ret;
137
+ }
138
+
139
+ words = filter(words);
140
+
141
+ words.forEach(function (word, i) {
142
+
143
+ switch (word) {
144
+ case "enter":
145
+ parsed.enter = words[i + 1];
146
+ return;
147
+
148
+ case "after":
149
+ parsed.after = words[i + 1];
150
+ return;
151
+
152
+ case "wait":
153
+ parsed.after = words[i + 1];
154
+ return;
155
+
156
+ case "move":
157
+ parsed.move = words[i + 1];
158
+ return;
159
+
160
+ case "ease":
161
+ parsed.move = words[i + 1];
162
+ parsed.ease = "ease";
163
+ return;
164
+
165
+ case "ease-in":
166
+ parsed.move = words[i + 1];
167
+ parsed.easing = "ease-in";
168
+ return;
169
+
170
+ case "ease-in-out":
171
+ parsed.move = words[i + 1];
172
+ parsed.easing = "ease-in-out";
173
+ return;
174
+
175
+ case "ease-out":
176
+ parsed.move = words[i + 1];
177
+ parsed.easing = "ease-out";
178
+ return;
179
+
180
+ case "over":
181
+ parsed.over = words[i + 1];
182
+ return;
183
+
184
+ default:
185
+ return;
186
+ }
187
+ });
188
+
189
+ return parsed;
190
+ },
191
+
192
+
193
+ /*=============================================================================*/
194
+
195
+ update: function (el) {
196
+ var css = this.genCSS(el);
197
+
198
+ if (!el.getAttribute('data-scrollReveal-initialized')) {
199
+ el.setAttribute('style', css.initial);
200
+ el.setAttribute('data-scrollReveal-initialized', true);
201
+ }
202
+
203
+ if (!this.isElementInViewport(el, this.options.viewportFactor)) {
204
+ if (this.options.reset) {
205
+ el.setAttribute('style', css.initial + css.reset);
206
+ }
207
+ return;
208
+ }
209
+
210
+ if (el.getAttribute('data-scrollReveal-complete')) return;
211
+
212
+ if (this.isElementInViewport(el, this.options.viewportFactor)) {
213
+ el.setAttribute('style', css.target + css.transition);
214
+ // Without reset enabled, we can safely remove the style tag
215
+ // to prevent CSS specificy wars with authored CSS.
216
+ if (!this.options.reset) {
217
+ setTimeout(function () {
218
+ el.removeAttribute('style');
219
+ el.setAttribute('data-scrollReveal-complete',true);
220
+ }, css.totalDuration);
221
+ }
222
+ return;
223
+ }
224
+ },
225
+
226
+ /*=============================================================================*/
227
+
228
+ genCSS: function (el) {
229
+ var parsed = this.parseLanguage(el),
230
+ enter,
231
+ axis;
232
+
233
+ if (parsed.enter) {
234
+
235
+ if (parsed.enter == "top" || parsed.enter == "bottom") {
236
+ enter = parsed.enter;
237
+ axis = "y";
238
+ }
239
+
240
+ if (parsed.enter == "left" || parsed.enter == "right") {
241
+ enter = parsed.enter;
242
+ axis = "x";
243
+ }
244
+
245
+ } else {
246
+
247
+ if (this.options.enter == "top" || this.options.enter == "bottom") {
248
+ enter = this.options.enter
249
+ axis = "y";
250
+ }
251
+
252
+ if (this.options.enter == "left" || this.options.enter == "right") {
253
+ enter = this.options.enter
254
+ axis = "x";
255
+ }
256
+ }
257
+
258
+ // After all values are parsed, let’s make sure our our
259
+ // pixel distance is negative for top and left entrances.
260
+ //
261
+ // ie. "move 25px from top" starts at 'top: -25px' in CSS.
262
+
263
+ if (enter == "top" || enter == "left") {
264
+ if (!typeof parsed.move == "undefined") {
265
+ parsed.move = "-" + parsed.move;
266
+ }
267
+ else {
268
+ parsed.move = "-" + this.options.move;
269
+ }
270
+ }
271
+
272
+ var dist = parsed.move || this.options.move,
273
+ dur = parsed.over || this.options.over,
274
+ delay = parsed.after || this.options.after,
275
+ easing = parsed.easing || this.options.easing;
276
+
277
+ var transition = "-webkit-transition: all " + dur + " " + easing + " " + delay + ";" +
278
+ "-moz-transition: all " + dur + " " + easing + " " + delay + ";" +
279
+ "-o-transition: all " + dur + " " + easing + " " + delay + ";" +
280
+ "transition: all " + dur + " " + easing + " " + delay + ";" +
281
+ "-webkit-perspective: 1000;" +
282
+ "-webkit-backface-visibility: hidden;";
283
+
284
+ // The same as transition, but removing the delay for elements fading out.
285
+ var reset = "-webkit-transition: all " + dur + " " + easing + " 0s;" +
286
+ "-moz-transition: all " + dur + " " + easing + " 0s;" +
287
+ "-o-transition: all " + dur + " " + easing + " 0s;" +
288
+ "transition: all " + dur + " " + easing + " 0s;" +
289
+ "-webkit-perspective: 1000;" +
290
+ "-webkit-backface-visibility: hidden;";
291
+
292
+ var initial = "-webkit-transform: translate" + axis + "(" + dist + ");" +
293
+ "-moz-transform: translate" + axis + "(" + dist + ");" +
294
+ "transform: translate" + axis + "(" + dist + ");" +
295
+ "opacity: 0;";
296
+
297
+ var target = "-webkit-transform: translate" + axis + "(0);" +
298
+ "-moz-transform: translate" + axis + "(0);" +
299
+ "transform: translate" + axis + "(0);" +
300
+ "opacity: 1;";
301
+ return {
302
+ transition: transition,
303
+ initial: initial,
304
+ target: target,
305
+ reset: reset,
306
+ totalDuration: ((parseFloat(dur) + parseFloat(delay)) * 1000)
307
+ };
308
+ },
309
+
310
+ getViewportH : function () {
311
+ var client = this.docElem['clientHeight'],
312
+ inner = window['innerHeight'];
313
+
314
+ return (client < inner) ? inner : client;
315
+ },
316
+
317
+ getOffset : function(el) {
318
+ var offsetTop = 0,
319
+ offsetLeft = 0;
320
+
321
+ do {
322
+ if (!isNaN(el.offsetTop)) {
323
+ offsetTop += el.offsetTop;
324
+ }
325
+ if (!isNaN(el.offsetLeft)) {
326
+ offsetLeft += el.offsetLeft;
327
+ }
328
+ } while (el = el.offsetParent)
329
+
330
+ return {
331
+ top: offsetTop,
332
+ left: offsetLeft
333
+ }
334
+ },
335
+
336
+ isElementInViewport : function(el, h) {
337
+ var scrolled = window.pageYOffset,
338
+ viewed = scrolled + this.getViewportH(),
339
+ elH = el.offsetHeight,
340
+ elTop = this.getOffset(el).top,
341
+ elBottom = elTop + elH,
342
+ h = h || 0;
343
+
344
+ return (elTop + elH * h) <= viewed && (elBottom) >= scrolled;
345
+ },
346
+
347
+ extend: function (a, b){
348
+ for (var key in b) {
349
+ if (b.hasOwnProperty(key)) {
350
+ a[key] = b[key];
351
+ }
352
+ }
353
+ return a;
354
+ }
355
+ }; // end scrollReveal.prototype
356
+
357
+ return scrollReveal;
358
+ })(window);
@@ -0,0 +1,5 @@
1
+ require 'scrollreveal/version'
2
+ require 'scrollreveal/rails'
3
+ require 'scrollreveal/helper'
4
+
5
+ ActionView::Base.send(:include, Scrollreveal::Helper)
@@ -0,0 +1,9 @@
1
+ module Scrollreveal
2
+ module Helper
3
+
4
+ def scroll_reveal(opts={},&block)
5
+ content_tag(:div,opts[:content],'data-scrollReveal' => opts[:animation],:class => opts[:class],&block)
6
+ end
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ module Scrollreveal
2
+ module Rails
3
+ class Engine < ::Rails::Engine
4
+ initializer "precompile", :group => :all do |app|
5
+ app.config.assets.precompile << Proc.new{|path| path == "scrollReveal.js" }
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Scrollreveal
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "scrollreveal/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "scrollreveal-rails"
7
+ s.version = Scrollreveal::VERSION
8
+ s.authors = ["Ankit Gupta"," Ekta Verma"]
9
+ s.date = '2014-02-23'
10
+ s.email = ["ankit.gupta8898@gmail.com","eku4evr@gmail.com"]
11
+ s.summary = %q{Ruby Wrapper on top of ScrollReveal.js}
12
+ s.description = %q{Gem that includes ScrollReveal (A small library to create and maintain how elements fade in,triggered when they enter the viewport.)}
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+
17
+ s.require_paths = ["lib"]
18
+ s.licenses = ['MIT']
19
+ s.homepage = 'https://github.com/gemathon-rockets/scrollreveal-rails'
20
+ s.add_dependency "railties", ">= 3.1"
21
+ s.add_development_dependency "bundler", "~> 1.0"
22
+ s.add_development_dependency "rails", ">= 3.1"
23
+ s.add_development_dependency 'rake'
24
+
25
+ end
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: scrollreveal-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ankit Gupta
8
+ - ! ' Ekta Verma'
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-02-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: railties
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '3.1'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '3.1'
28
+ - !ruby/object:Gem::Dependency
29
+ name: bundler
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '1.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '1.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rails
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '3.1'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '3.1'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ description: Gem that includes ScrollReveal (A small library to create and maintain
71
+ how elements fade in,triggered when they enter the viewport.)
72
+ email:
73
+ - ankit.gupta8898@gmail.com
74
+ - eku4evr@gmail.com
75
+ executables: []
76
+ extensions: []
77
+ extra_rdoc_files: []
78
+ files:
79
+ - .gitignore
80
+ - .travis.yml
81
+ - Changelog.md
82
+ - Gemfile
83
+ - Rakefile
84
+ - Readme.md
85
+ - app/assets/javascripts/scrollReveal.js
86
+ - lib/scrollreveal-rails.rb
87
+ - lib/scrollreveal/helper.rb
88
+ - lib/scrollreveal/rails.rb
89
+ - lib/scrollreveal/version.rb
90
+ - scrollreveal-rails.gemspec
91
+ homepage: https://github.com/gemathon-rockets/scrollreveal-rails
92
+ licenses:
93
+ - MIT
94
+ metadata: {}
95
+ post_install_message:
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ requirements: []
110
+ rubyforge_project:
111
+ rubygems_version: 2.1.10
112
+ signing_key:
113
+ specification_version: 4
114
+ summary: Ruby Wrapper on top of ScrollReveal.js
115
+ test_files: []