readmorejs-rails 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 381cf301eb551f89c9f09569be450df1b3e001c3
4
- data.tar.gz: 63cd3e348a8181ce10681e8734929cbde4bc58d5
3
+ metadata.gz: 39bc82eec15d46381e6b46a7ce1f1cc59d6f6d75
4
+ data.tar.gz: 922577f57d1cee1fd21b2c0f2af03646d01961a5
5
5
  SHA512:
6
- metadata.gz: 731a8308ee699a89577fa925883272f67375b03a4dd64b9a76342eb86f28384fde1d592fd399205d81d76b39546b494a685cbb4b369987405d13144600b851e5
7
- data.tar.gz: 5ee2a0e458e71ca7e707b7ad48e381196585b51dc8cc374e10171674cd88004f9ac33aadc7bf2a52746cd59cc9e4111d9f4b11a1e7febe44def72b1cc9f4f781
6
+ metadata.gz: 195c7d2f08f0b619b80a4f9afaa407812a2f6a2969ad7c56fcb61c54abd721394c369b56d5d43e2a72046cfce8a9aac4981e86ee572dc43af0cae3854ca16d1f
7
+ data.tar.gz: 134fb72adc5d8673b15520e0b1355b0ee68d445357c3dbc312d6afbef8fe657eb553b9c9b062e3e15ea349414c196e87514ebb282481a43c101b90d67460e574
@@ -1,5 +1,5 @@
1
1
  module Readmorejs
2
2
  module Rails
3
- VERSION = "0.0.11"
3
+ VERSION = "0.0.12"
4
4
  end
5
5
  end
@@ -1,142 +1,313 @@
1
1
  /*!
2
+ * @preserve
3
+ *
2
4
  * Readmore.js jQuery plugin
3
5
  * Author: @jed_foster
4
- * Project home: jedfoster.github.io/Readmore.js
6
+ * Project home: http://jedfoster.github.io/Readmore.js
5
7
  * Licensed under the MIT license
8
+ *
9
+ * Debounce function from http://davidwalsh.name/javascript-debounce-function
6
10
  */
7
11
 
8
- ;(function($) {
12
+ /* global jQuery */
13
+
14
+ (function($) {
15
+ 'use strict';
9
16
 
10
17
  var readmore = 'readmore',
11
18
  defaults = {
12
19
  speed: 100,
13
- maxHeight: 200,
20
+ collapsedHeight: 200,
21
+ heightMargin: 16,
14
22
  moreLink: '<a href="#">Read More</a>',
15
23
  lessLink: '<a href="#">Close</a>',
16
24
  embedCSS: true,
17
- sectionCSS: 'display: block; width: 100%;',
25
+ blockCSS: 'display: block; width: 100%;',
18
26
  startOpen: false,
19
27
 
20
28
  // callbacks
21
29
  beforeToggle: function(){},
22
30
  afterToggle: function(){}
23
31
  },
24
- cssEmbedded = false;
32
+ cssEmbedded = {},
33
+ uniqueIdCounter = 0;
25
34
 
26
- function Readmore( element, options ) {
27
- this.element = element;
35
+ function debounce(func, wait, immediate) {
36
+ var timeout;
37
+
38
+ return function() {
39
+ var context = this, args = arguments;
40
+ var later = function() {
41
+ timeout = null;
42
+ if (! immediate) {
43
+ func.apply(context, args);
44
+ }
45
+ };
46
+ var callNow = immediate && !timeout;
47
+
48
+ clearTimeout(timeout);
49
+ timeout = setTimeout(later, wait);
50
+
51
+ if (callNow) {
52
+ func.apply(context, args);
53
+ }
54
+ };
55
+ }
56
+
57
+ function uniqueId(prefix) {
58
+ var id = ++uniqueIdCounter;
28
59
 
29
- this.options = $.extend( {}, defaults, options);
60
+ return String(prefix == null ? 'rmjs-' : prefix) + id;
61
+ }
62
+
63
+ function setBoxHeights(element) {
64
+ var el = element.clone().css({
65
+ height: 'auto',
66
+ width: element.width(),
67
+ maxHeight: 'none',
68
+ overflow: 'hidden'
69
+ }).insertAfter(element),
70
+ expandedHeight = el.outerHeight(),
71
+ cssMaxHeight = parseInt(el.css({maxHeight: ''}).css('max-height').replace(/[^-\d\.]/g, ''), 10),
72
+ defaultHeight = element.data('defaultHeight');
73
+
74
+ el.remove();
30
75
 
31
- $(this.element).data('max-height', this.options.maxHeight);
76
+ var collapsedHeight = cssMaxHeight || element.data('collapsedHeight') || defaultHeight;
77
+
78
+ // Store our measurements.
79
+ element.data({
80
+ expandedHeight: expandedHeight,
81
+ maxHeight: cssMaxHeight,
82
+ collapsedHeight: collapsedHeight
83
+ })
84
+ // and disable any `max-height` property set in CSS
85
+ .css({
86
+ maxHeight: 'none'
87
+ });
88
+ }
32
89
 
33
- delete(this.options.maxHeight);
90
+ var resizeBoxes = debounce(function() {
91
+ $('[data-readmore]').each(function() {
92
+ var current = $(this),
93
+ isExpanded = (current.attr('aria-expanded') === 'true');
34
94
 
35
- if(this.options.embedCSS && ! cssEmbedded) {
36
- var styles = '.readmore-js-toggle, .readmore-js-section { ' + this.options.sectionCSS + ' } .readmore-js-section { overflow: hidden; }';
95
+ setBoxHeights(current);
37
96
 
38
- (function(d,u) {
39
- var css=d.createElement('style');
97
+ current.css({
98
+ height: current.data( (isExpanded ? 'expandedHeight' : 'collapsedHeight') )
99
+ });
100
+ });
101
+ }, 100);
102
+
103
+ function embedCSS(options) {
104
+ if (! cssEmbedded[options.selector]) {
105
+ var styles = ' ';
106
+
107
+ if (options.embedCSS && options.blockCSS !== '') {
108
+ styles += options.selector + ' + [data-readmore-toggle], ' +
109
+ options.selector + '[data-readmore]{' +
110
+ options.blockCSS +
111
+ '}';
112
+ }
113
+
114
+ // Include the transition CSS even if embedCSS is false
115
+ styles += options.selector + '[data-readmore]{' +
116
+ 'transition: height ' + options.speed + 'ms;' +
117
+ 'overflow: hidden;' +
118
+ '}';
119
+
120
+ (function(d, u) {
121
+ var css = d.createElement('style');
40
122
  css.type = 'text/css';
41
- if(css.styleSheet) {
42
- css.styleSheet.cssText = u;
123
+
124
+ if (css.styleSheet) {
125
+ css.styleSheet.cssText = u;
43
126
  }
44
127
  else {
45
- css.appendChild(d.createTextNode(u));
128
+ css.appendChild(d.createTextNode(u));
46
129
  }
47
- d.getElementsByTagName("head")[0].appendChild(css);
130
+
131
+ d.getElementsByTagName('head')[0].appendChild(css);
48
132
  }(document, styles));
49
133
 
50
- cssEmbedded = true;
134
+ cssEmbedded[options.selector] = true;
51
135
  }
136
+ }
137
+
138
+ function Readmore(element, options) {
139
+ var $this = this;
140
+
141
+ this.element = element;
142
+
143
+ this.options = $.extend({}, defaults, options);
144
+
145
+ embedCSS(this.options);
52
146
 
53
147
  this._defaults = defaults;
54
148
  this._name = readmore;
55
149
 
56
150
  this.init();
151
+
152
+ // IE8 chokes on `window.addEventListener`, so need to test for support.
153
+ if (window.addEventListener) {
154
+ // Need to resize boxes when the page has fully loaded.
155
+ window.addEventListener('load', resizeBoxes);
156
+ window.addEventListener('resize', resizeBoxes);
157
+ }
158
+ else {
159
+ window.attachEvent('load', resizeBoxes);
160
+ window.attachEvent('resize', resizeBoxes);
161
+ }
57
162
  }
58
163
 
59
- Readmore.prototype = {
60
164
 
165
+ Readmore.prototype = {
61
166
  init: function() {
62
- var $this = this;
167
+ var $this = this,
168
+ current = $(this.element);
63
169
 
64
- $(this.element).each(function() {
65
- var current = $(this),
66
- maxHeight = (current.css('max-height').replace(/[^-\d\.]/g, '') > current.data('max-height')) ? current.css('max-height').replace(/[^-\d\.]/g, '') : current.data('max-height');
170
+ current.data({
171
+ defaultHeight: this.options.collapsedHeight,
172
+ heightMargin: this.options.heightMargin
173
+ });
67
174
 
68
- current.addClass('readmore-js-section');
175
+ setBoxHeights(current);
69
176
 
70
- if(current.css('max-height') != "none") {
71
- current.css("max-height", "none");
72
- }
177
+ var collapsedHeight = current.data('collapsedHeight'),
178
+ heightMargin = current.data('heightMargin');
73
179
 
74
- current.data("boxHeight", current.outerHeight(true));
180
+ if (current.outerHeight(true) <= collapsedHeight + heightMargin) {
181
+ // The block is shorter than the limit, so there's no need to truncate it.
182
+ return true;
183
+ }
184
+ else {
185
+ var id = current.attr('id') || uniqueId(),
186
+ useLink = $this.options.startOpen ? $this.options.lessLink : $this.options.moreLink;
75
187
 
76
- if(current.outerHeight(true) < maxHeight) {
77
- // The block is shorter than the limit, so there's no need to truncate it.
78
- return true;
79
- }
80
- else {
81
- current.data('sliderHeight', maxHeight);
188
+ current.attr({
189
+ 'data-readmore': '',
190
+ 'aria-expanded': false,
191
+ 'id': id
192
+ });
82
193
 
83
- var useLink = $this.options.startOpen ? $this.options.lessLink : $this.options.moreLink;
84
- current.after($(useLink).on('click', function(event) { $this.toggleSlider(this, current, event) }).addClass('readmore-js-toggle'));
194
+ current.after($(useLink)
195
+ .on('click', function(event) { $this.toggle(this, current[0], event); })
196
+ .attr({
197
+ 'data-readmore-toggle': '',
198
+ 'aria-controls': id
199
+ }));
85
200
 
86
- if(!$this.options.startOpen) {
87
- current.css({height: maxHeight});
88
- }
201
+ if (! $this.options.startOpen) {
202
+ current.css({
203
+ height: collapsedHeight
204
+ });
89
205
  }
90
- });
206
+ }
91
207
  },
92
208
 
93
- toggleSlider: function(trigger, element, event)
94
- {
95
- event.preventDefault();
209
+ toggle: function(trigger, element, event) {
210
+ if (event) {
211
+ event.preventDefault();
212
+ }
213
+
214
+ if (! trigger) {
215
+ trigger = $('[aria-controls="' + this.element.id + '"]')[0];
216
+ }
217
+
218
+ if (! element) {
219
+ element = this.element;
220
+ }
96
221
 
97
222
  var $this = this,
98
- newHeight = newLink = '',
99
- more = false,
100
- sliderHeight = $(element).data('sliderHeight');
223
+ $element = $(element),
224
+ newHeight = '',
225
+ newLink = '',
226
+ expanded = false,
227
+ collapsedHeight = $element.data('collapsedHeight');
101
228
 
102
- if ($(element).height() == sliderHeight) {
103
- newHeight = $(element).data().boxHeight + "px";
229
+ if ($element.height() <= collapsedHeight) {
230
+ newHeight = $element.data('expandedHeight') + 'px';
104
231
  newLink = 'lessLink';
105
- more = true;
232
+ expanded = true;
106
233
  }
107
-
108
234
  else {
109
- newHeight = sliderHeight;
235
+ newHeight = collapsedHeight;
110
236
  newLink = 'moreLink';
111
237
  }
112
238
 
113
239
  // Fire beforeToggle callback
114
- $this.options.beforeToggle(trigger, element, more);
240
+ // Since we determined the new "expanded" state above we're now out of sync
241
+ // with our true current state, so we need to flip the value of `expanded`
242
+ $this.options.beforeToggle(trigger, element, ! expanded);
115
243
 
116
- $(element).animate({"height": newHeight}, {duration: $this.options.speed });
117
-
118
- $(trigger).replaceWith($($this.options[newLink]).on('click', function(event) { $this.toggleSlider(this, element, event) }).addClass('readmore-js-toggle'));
244
+ $element.css({'height': newHeight});
119
245
 
120
246
  // Fire afterToggle callback
121
- $this.options.afterToggle(trigger, element, more);
247
+ $element.on('transitionend', function() {
248
+ $this.options.afterToggle(trigger, element, expanded);
249
+
250
+ $(this).attr({
251
+ 'aria-expanded': expanded
252
+ }).off('transitionend');
253
+ });
254
+
255
+ $(trigger).replaceWith($($this.options[newLink])
256
+ .on('click', function(event) { $this.toggle(this, element, event); })
257
+ .attr({
258
+ 'data-readmore-toggle': '',
259
+ 'aria-controls': $element.attr('id')
260
+ }));
261
+ },
262
+
263
+ destroy: function() {
264
+ $(this.element).each(function() {
265
+ var current = $(this);
266
+
267
+ current.attr({
268
+ 'data-readmore': null,
269
+ 'aria-expanded': null
270
+ })
271
+ .css({
272
+ maxHeight: '',
273
+ height: ''
274
+ })
275
+ .next('[data-readmore-toggle]')
276
+ .remove();
277
+
278
+ current.removeData();
279
+ });
122
280
  }
123
281
  };
124
282
 
125
- $.fn[readmore] = function( options ) {
126
- var args = arguments;
127
- if (options === undefined || typeof options === 'object') {
128
- return this.each(function () {
129
- if (!$.data(this, 'plugin_' + readmore)) {
130
- $.data(this, 'plugin_' + readmore, new Readmore( this, options ));
283
+
284
+ $.fn.readmore = function(options) {
285
+ var args = arguments,
286
+ selector = this.selector;
287
+
288
+ options = options || {};
289
+
290
+ if (typeof options === 'object') {
291
+ return this.each(function() {
292
+ if ($.data(this, 'plugin_' + readmore)) {
293
+ var instance = $.data(this, 'plugin_' + readmore);
294
+ instance.destroy.apply(instance);
131
295
  }
296
+
297
+ options.selector = selector;
298
+
299
+ $.data(this, 'plugin_' + readmore, new Readmore(this, options));
132
300
  });
133
- } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
301
+ }
302
+ else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
134
303
  return this.each(function () {
135
304
  var instance = $.data(this, 'plugin_' + readmore);
136
305
  if (instance instanceof Readmore && typeof instance[options] === 'function') {
137
- instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );
306
+ instance[options].apply(instance, Array.prototype.slice.call(args, 1));
138
307
  }
139
308
  });
140
309
  }
141
- }
310
+ };
311
+
142
312
  })(jQuery);
313
+
@@ -1,5 +1,11 @@
1
- (function(d){function g(c,a){this.element=c;this.options=d.extend({},h,a);d(this.element).data("max-height",this.options.maxHeight);delete this.options.maxHeight;if(this.options.embedCSS&&!k){var b=".readmore-js-toggle, .readmore-js-section { "+this.options.sectionCSS+" } .readmore-js-section { overflow: hidden; }",e=document.createElement("style");e.type="text/css";e.styleSheet?e.styleSheet.cssText=b:e.appendChild(document.createTextNode(b));document.getElementsByTagName("head")[0].appendChild(e);
2
- k=!0}this._defaults=h;this._name=f;this.init()}var f="readmore",h={speed:100,maxHeight:200,moreLink:'<a href="#">Read More</a>',lessLink:'<a href="#">Close</a>',embedCSS:!0,sectionCSS:"display: block; width: 100%;",beforeToggle:function(){},afterToggle:function(){}},k=!1;g.prototype={init:function(){var c=this;d(this.element).each(function(){var a=d(this),b=a.css("max-height").replace(/[^-\d\.]/g,"")>a.data("max-height")?a.css("max-height").replace(/[^-\d\.]/g,""):a.data("max-height");a.addClass("readmore-js-section");
3
- "none"!=a.css("max-height")&&a.css("max-height","none");a.data("boxHeight",a.outerHeight(!0));if(a.outerHeight(!0)<b)return!0;a.after(d(c.options.moreLink).on("click",function(b){c.toggleSlider(this,a,b)}).addClass("readmore-js-toggle"));a.data("sliderHeight",b);a.css({height:b})})},toggleSlider:function(c,a,b){b.preventDefault();var e=this,f=newLink="";b=!1;f=d(a).data("sliderHeight");d(a).height()==f?(f=d(a).data().boxHeight+"px",newLink="lessLink",b=!0):newLink="moreLink";e.options.beforeToggle(c,
4
- a,b);d(a).animate({height:f},{duration:e.options.speed});d(c).replaceWith(d(e.options[newLink]).on("click",function(b){e.toggleSlider(this,a,b)}).addClass("readmore-js-toggle"));e.options.afterToggle(c,a,b)}};d.fn[f]=function(c){var a=arguments;if(void 0===c||"object"===typeof c)return this.each(function(){d.data(this,"plugin_"+f)||d.data(this,"plugin_"+f,new g(this,c))});if("string"===typeof c&&"_"!==c[0]&&"init"!==c)return this.each(function(){var b=d.data(this,"plugin_"+f);b instanceof g&&"function"===
5
- typeof b[c]&&b[c].apply(b,Array.prototype.slice.call(a,1))})}})(jQuery);
1
+ /*!
2
+ * @preserve
3
+ *
4
+ * Readmore.js jQuery plugin
5
+ * Author: @jed_foster
6
+ * Project home: http://jedfoster.github.io/Readmore.js
7
+ * Licensed under the MIT license
8
+ *
9
+ * Debounce function from http://davidwalsh.name/javascript-debounce-function
10
+ */
11
+ !function(e){"use strict";function t(e,t,a){var i;return function(){var n=this,o=arguments,r=function(){i=null,a||e.apply(n,o)},s=a&&!i;clearTimeout(i),i=setTimeout(r,t),s&&e.apply(n,o)}}function a(e){var t=++h;return String(null==e?"rmjs-":e)+t}function i(e){var t=e.clone().css({height:"auto",width:e.width(),maxHeight:"none",overflow:"hidden"}).insertAfter(e),a=t.outerHeight(),i=parseInt(t.css({maxHeight:""}).css("max-height").replace(/[^-\d\.]/g,""),10),n=e.data("defaultHeight");t.remove();var o=i||e.data("collapsedHeight")||n;e.data({expandedHeight:a,maxHeight:i,collapsedHeight:o}).css({maxHeight:"none"})}function n(e){if(!d[e.selector]){var t=" ";e.embedCSS&&""!==e.blockCSS&&(t+=e.selector+" + [data-readmore-toggle], "+e.selector+"[data-readmore]{"+e.blockCSS+"}"),t+=e.selector+"[data-readmore]{transition: height "+e.speed+"ms;overflow: hidden;}",function(e,t){var a=e.createElement("style");a.type="text/css",a.styleSheet?a.styleSheet.cssText=t:a.appendChild(e.createTextNode(t)),e.getElementsByTagName("head")[0].appendChild(a)}(document,t),d[e.selector]=!0}}function o(t,a){this.element=t,this.options=e.extend({},s,a),n(this.options),this._defaults=s,this._name=r,this.init(),window.addEventListener?(window.addEventListener("load",l),window.addEventListener("resize",l)):(window.attachEvent("load",l),window.attachEvent("resize",l))}var r="readmore",s={speed:100,collapsedHeight:200,heightMargin:16,moreLink:'<a href="#">Read More</a>',lessLink:'<a href="#">Close</a>',embedCSS:!0,blockCSS:"display: block; width: 100%;",startOpen:!1,beforeToggle:function(){},afterToggle:function(){}},d={},h=0,l=t(function(){e("[data-readmore]").each(function(){var t=e(this),a="true"===t.attr("aria-expanded");i(t),t.css({height:t.data(a?"expandedHeight":"collapsedHeight")})})},100);o.prototype={init:function(){var t=this,n=e(this.element);n.data({defaultHeight:this.options.collapsedHeight,heightMargin:this.options.heightMargin}),i(n);var o=n.data("collapsedHeight"),r=n.data("heightMargin");if(n.outerHeight(!0)<=o+r)return!0;var s=n.attr("id")||a(),d=t.options.startOpen?t.options.lessLink:t.options.moreLink;n.attr({"data-readmore":"","aria-expanded":!1,id:s}),n.after(e(d).on("click",function(e){t.toggle(this,n[0],e)}).attr({"data-readmore-toggle":"","aria-controls":s})),t.options.startOpen||n.css({height:o})},toggle:function(t,a,i){i&&i.preventDefault(),t||(t=e('[aria-controls="'+this.element.id+'"]')[0]),a||(a=this.element);var n=this,o=e(a),r="",s="",d=!1,h=o.data("collapsedHeight");o.height()<=h?(r=o.data("expandedHeight")+"px",s="lessLink",d=!0):(r=h,s="moreLink"),n.options.beforeToggle(t,a,!d),o.css({height:r}),o.on("transitionend",function(){n.options.afterToggle(t,a,d),e(this).attr({"aria-expanded":d}).off("transitionend")}),e(t).replaceWith(e(n.options[s]).on("click",function(e){n.toggle(this,a,e)}).attr({"data-readmore-toggle":"","aria-controls":o.attr("id")}))},destroy:function(){e(this.element).each(function(){var t=e(this);t.attr({"data-readmore":null,"aria-expanded":null}).css({maxHeight:"",height:""}).next("[data-readmore-toggle]").remove(),t.removeData()})}},e.fn.readmore=function(t){var a=arguments,i=this.selector;return t=t||{},"object"==typeof t?this.each(function(){if(e.data(this,"plugin_"+r)){var a=e.data(this,"plugin_"+r);a.destroy.apply(a)}t.selector=i,e.data(this,"plugin_"+r,new o(this,t))}):"string"==typeof t&&"_"!==t[0]&&"init"!==t?this.each(function(){var i=e.data(this,"plugin_"+r);i instanceof o&&"function"==typeof i[t]&&i[t].apply(i,Array.prototype.slice.call(a,1))}):void 0}}(jQuery);
metadata CHANGED
@@ -1,89 +1,89 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: readmorejs-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - seankay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-08 00:00:00.000000000 Z
11
+ date: 2015-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.2'
20
- - - <
20
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '5.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - '>='
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3.2'
30
- - - <
30
+ - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '5.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: bundler
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ~>
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '1.3'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ~>
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.3'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - '>='
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - '>='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: activesupport
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - '>='
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - '>='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: tzinfo
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - '>='
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - '>='
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  description: Readmore.js for Rails
@@ -93,7 +93,7 @@ executables: []
93
93
  extensions: []
94
94
  extra_rdoc_files: []
95
95
  files:
96
- - .gitignore
96
+ - ".gitignore"
97
97
  - Gemfile
98
98
  - LICENSE.txt
99
99
  - README.md
@@ -126,17 +126,17 @@ require_paths:
126
126
  - lib
127
127
  required_ruby_version: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  requirements:
134
- - - '>='
134
+ - - ">="
135
135
  - !ruby/object:Gem::Version
136
136
  version: '0'
137
137
  requirements: []
138
138
  rubyforge_project:
139
- rubygems_version: 2.2.0
139
+ rubygems_version: 2.4.5
140
140
  signing_key:
141
141
  specification_version: 4
142
142
  summary: Gemified Readmore.js