readmorejs-rails 0.0.11 → 0.0.12

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.
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