zeroclipboard-rails 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MTIxMzM1OGM0YWVkYTI4ODAwY2RhYzE2MzNmYjRhNjdiMGQ3YjY5ZA==
5
- data.tar.gz: !binary |-
6
- NDA3OTdiMzU5YWI0NDVkOGVlNjQ5MDhmOWMwZTc0YjEwN2E4ZDc3Mw==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MWJlNDdkMmQ3MTAyZTYyNjQwY2ViMTdjM2EyMTE0ZDI3NGQxZmUwOTY1MWYx
10
- ZTkzY2ZjYTI3YjkwNmMxNTM5MjM5ZGU0NWEzYmEyMGFhYjliNTM1ZGE2NmNi
11
- MzYwNjdmNWZjMTdmOGYwMDM4Y2I2YWU1YTM2MmRjNzRlMTE0N2I=
12
- data.tar.gz: !binary |-
13
- Yjk2NmQ1NDQ2ZGIzMWU0N2Q1YjFkYzdjYmY1MjRhM2E1ZWExOTU2M2NjNmY0
14
- MzJiMzc4MWI0YmFiZTgwMWMzZDY2NWM5NmY1NGM0YzNlMjRmY2U5YmVhYTM5
15
- OTZkOWM2YTgyZDBjZDNjOGIyYjZjYjY3MGNjN2RkMTEzMzM0N2M=
2
+ SHA1:
3
+ metadata.gz: b5884e438fb4efc6deb96fae16c35ee654c6cc39
4
+ data.tar.gz: 6e6dee00c12ccc40070e048167b39358d4b9721f
5
+ SHA512:
6
+ metadata.gz: c2d098e026f30e1f18d5895002797a36bef16b30fd23802d46f2b0b418abd3ad6386c98c4aff8c61bfe688f4f6a53ea1c7d4bbacc3a55511742757f0ec0800e2
7
+ data.tar.gz: add4715b320ed79d5eb6add9ebb36a2200beab898318b51d23de2ec607289d724939fc33814aa6e6ce8ec9524684d549c24dd5381a0eed1b9806cefc0497cf91
data/README.md CHANGED
@@ -124,6 +124,13 @@ This gem is merely a wrapper around [ZeroClipboard](https://github.com/zeroclipb
124
124
  Includes workaround for <a href="https://github.com/zeroclipboard/ZeroClipboard/issues/149">CSS zoom bug</a>
125
125
  </td>
126
126
  </tr>
127
+ <tr>
128
+ <td><a href="https://rubygems.org/gems/zeroclipboard-rails/versions/0.0.7">0.0.7</a></td>
129
+ <td><a href="https://github.com/zeroclipboard/ZeroClipboard/tree/v1.1.7">1.1.7</a></td>
130
+ <td>
131
+ Includes workaround for <a href="https://github.com/zeroclipboard/ZeroClipboard/issues/149">CSS zoom bug</a>
132
+ </td>
133
+ </tr>
127
134
  </table>
128
135
 
129
136
 
@@ -1,35 +1,45 @@
1
1
  /*!
2
- * zeroclipboard
3
- * The Zero Clipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie, and a JavaScript interface.
4
- * Copyright 2012 Jon Rohan, James M. Greene, .
5
- * Released under the MIT license
6
- * http://jonrohan.github.com/ZeroClipboard/
7
- * v1.1.7
8
- */(function() {
2
+ * ZeroClipboard
3
+ * The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
4
+ * Copyright (c) 2013 Jon Rohan, James M. Greene
5
+ * Licensed MIT
6
+ * http://zeroclipboard.org/
7
+ * v1.2.2
8
+ */
9
+ (function() {
9
10
  "use strict";
11
+ var _camelizeCssPropName = function() {
12
+ var matcherRegex = /\-([a-z])/g, replacerFn = function(match, group) {
13
+ return group.toUpperCase();
14
+ };
15
+ return function(prop) {
16
+ return prop.replace(matcherRegex, replacerFn);
17
+ };
18
+ }();
10
19
  var _getStyle = function(el, prop) {
11
- var y = el.style[prop];
12
- if (el.currentStyle) y = el.currentStyle[prop]; else if (window.getComputedStyle) y = document.defaultView.getComputedStyle(el, null).getPropertyValue(prop);
13
- if (y == "auto" && prop == "cursor") {
14
- var possiblePointers = [ "a" ];
15
- for (var i = 0; i < possiblePointers.length; i++) {
16
- if (el.tagName.toLowerCase() == possiblePointers[i]) {
17
- return "pointer";
18
- }
20
+ var value, camelProp, tagName, possiblePointers, i, len;
21
+ if (window.getComputedStyle) {
22
+ value = window.getComputedStyle(el, null).getPropertyValue(prop);
23
+ } else {
24
+ camelProp = _camelizeCssPropName(prop);
25
+ if (el.currentStyle) {
26
+ value = el.currentStyle[camelProp];
27
+ } else {
28
+ value = el.style[camelProp];
19
29
  }
20
30
  }
21
- return y;
22
- };
23
- var _getZoom = function(obj) {
24
- var zoom = 1;
25
- if(RegExp(' AppleWebKit/').test(navigator.userAgent)){
26
- while(obj)
27
- {
28
- zoom = zoom * _getStyle(obj,'zoom');
29
- obj = obj.offsetParent;
30
- }
31
+ if (prop === "cursor") {
32
+ if (!value || value === "auto") {
33
+ tagName = el.tagName.toLowerCase();
34
+ possiblePointers = [ "a" ];
35
+ for (i = 0, len = possiblePointers.length; i < len; i++) {
36
+ if (tagName === possiblePointers[i]) {
37
+ return "pointer";
38
+ }
39
+ }
40
+ }
31
41
  }
32
- return zoom;
42
+ return value;
33
43
  };
34
44
  var _elementMouseOver = function(event) {
35
45
  if (!ZeroClipboard.prototype._singleton) return;
@@ -104,54 +114,82 @@
104
114
  }
105
115
  return element;
106
116
  };
117
+ var _getZoomFactor = function() {
118
+ var rect, physicalWidth, logicalWidth, zoomFactor = 1;
119
+ if (typeof document.body.getBoundingClientRect === "function") {
120
+ rect = document.body.getBoundingClientRect();
121
+ physicalWidth = rect.right - rect.left;
122
+ logicalWidth = document.body.offsetWidth;
123
+ zoomFactor = Math.round(physicalWidth / logicalWidth * 100) / 100;
124
+ }
125
+ return zoomFactor;
126
+ };
107
127
  var _getDOMObjectPosition = function(obj) {
108
128
  var info = {
109
129
  left: 0,
110
130
  top: 0,
111
- width: obj.width || obj.offsetWidth || 0,
112
- height: obj.height || obj.offsetHeight || 0,
113
- zIndex: 9999
131
+ width: 0,
132
+ height: 0,
133
+ zIndex: 999999999
114
134
  };
115
- var zi = _getStyle(obj, "zIndex");
116
- if (zi && zi != "auto") {
135
+ var zi = _getStyle(obj, "z-index");
136
+ if (zi && zi !== "auto") {
117
137
  info.zIndex = parseInt(zi, 10);
118
138
  }
119
- if (typeof obj.getBoundingClientRect !== "undefined") {
139
+ if (obj.getBoundingClientRect) {
120
140
  var rect = obj.getBoundingClientRect();
121
- var pageXOffset = window.pageXOffset || document.documentElement.scrollLeft || 0;
122
- var pageYOffset = window.pageYOffset || document.documentElement.scrollTop || 0;
141
+ var pageXOffset, pageYOffset, zoomFactor;
142
+ if ("pageXOffset" in window && "pageYOffset" in window) {
143
+ pageXOffset = window.pageXOffset;
144
+ pageYOffset = window.pageYOffset;
145
+ } else {
146
+ zoomFactor = _getZoomFactor();
147
+ pageXOffset = Math.round(document.documentElement.scrollLeft / zoomFactor);
148
+ pageYOffset = Math.round(document.documentElement.scrollTop / zoomFactor);
149
+ }
123
150
  var leftBorderWidth = document.documentElement.clientLeft || 0;
124
151
  var topBorderWidth = document.documentElement.clientTop || 0;
125
- var zoom = _getZoom(obj);
126
- info.width = rect.width * zoom;
127
- info.height = rect.height * zoom;
128
- info.left = (rect.left + pageXOffset - leftBorderWidth) * zoom;
129
- info.top = (rect.top + pageYOffset - topBorderWidth) * zoom;
130
- return info;
131
- }
132
- while (obj) {
133
- var borderLeftWidth = parseInt(_getStyle(obj, "borderLeftWidth"), 10);
134
- var borderTopWidth = parseInt(_getStyle(obj, "borderTopWidth"), 10);
135
- info.left += isNaN(obj.offsetLeft) ? 0 : obj.offsetLeft;
136
- info.left += isNaN(borderLeftWidth) ? 0 : borderLeftWidth;
137
- info.top += isNaN(obj.offsetTop) ? 0 : obj.offsetTop;
138
- info.top += isNaN(borderTopWidth) ? 0 : borderTopWidth;
139
- obj = obj.offsetParent;
152
+ info.left = rect.left + pageXOffset - leftBorderWidth;
153
+ info.top = rect.top + pageYOffset - topBorderWidth;
154
+ info.width = "width" in rect ? rect.width : rect.right - rect.left;
155
+ info.height = "height" in rect ? rect.height : rect.bottom - rect.top;
140
156
  }
141
157
  return info;
142
158
  };
143
- var _noCache = function(path) {
144
- return (path.indexOf("?") >= 0 ? "&" : "?") + "nocache=" + (new Date).getTime();
159
+ var _noCache = function(path, options) {
160
+ var useNoCache = !(options && options.useNoCache === false);
161
+ if (useNoCache) {
162
+ return (path.indexOf("?") === -1 ? "?" : "&") + "nocache=" + new Date().getTime();
163
+ } else {
164
+ return "";
165
+ }
145
166
  };
146
167
  var _vars = function(options) {
147
168
  var str = [];
169
+ var origins = [];
170
+ if (options.trustedOrigins) {
171
+ if (typeof options.trustedOrigins === "string") {
172
+ origins.push(options.trustedOrigins);
173
+ } else if (typeof options.trustedOrigins === "object" && "length" in options.trustedOrigins) {
174
+ origins = origins.concat(options.trustedOrigins);
175
+ }
176
+ }
148
177
  if (options.trustedDomains) {
149
178
  if (typeof options.trustedDomains === "string") {
150
- str.push("trustedDomain=" + options.trustedDomains);
151
- } else {
152
- str.push("trustedDomain=" + options.trustedDomains.join(","));
179
+ origins.push(options.trustedDomains);
180
+ } else if (typeof options.trustedDomains === "object" && "length" in options.trustedDomains) {
181
+ origins = origins.concat(options.trustedDomains);
153
182
  }
154
183
  }
184
+ if (origins.length) {
185
+ str.push("trustedOrigins=" + encodeURIComponent(origins.join(",")));
186
+ }
187
+ if (typeof options.amdModuleId === "string" && options.amdModuleId) {
188
+ str.push("amdModuleId=" + encodeURIComponent(options.amdModuleId));
189
+ }
190
+ if (typeof options.cjsModuleId === "string" && options.cjsModuleId) {
191
+ str.push("cjsModuleId=" + encodeURIComponent(options.cjsModuleId));
192
+ }
155
193
  return str.join("&");
156
194
  };
157
195
  var _inArray = function(elem, array) {
@@ -170,6 +208,15 @@
170
208
  if (!elements.length) return [ elements ];
171
209
  return elements;
172
210
  };
211
+ var _dispatchCallback = function(func, element, instance, args, async) {
212
+ if (async) {
213
+ window.setTimeout(function() {
214
+ func.call(element, instance, args);
215
+ }, 0);
216
+ } else {
217
+ func.call(element, instance, args);
218
+ }
219
+ };
173
220
  var ZeroClipboard = function(elements, options) {
174
221
  if (elements) (ZeroClipboard.prototype._singleton || this).glue(elements);
175
222
  if (ZeroClipboard.prototype._singleton) return ZeroClipboard.prototype._singleton;
@@ -184,34 +231,48 @@
184
231
  ZeroClipboard.prototype.setCurrent = function(element) {
185
232
  currentElement = element;
186
233
  this.reposition();
187
- if (element.getAttribute("title")) {
188
- this.setTitle(element.getAttribute("title"));
234
+ var titleAttr = element.getAttribute("title");
235
+ if (titleAttr) {
236
+ this.setTitle(titleAttr);
189
237
  }
190
- this.setHandCursor(_getStyle(element, "cursor") == "pointer");
238
+ var useHandCursor = this.options.forceHandCursor === true || _getStyle(element, "cursor") === "pointer";
239
+ _setHandCursor.call(this, useHandCursor);
240
+ return this;
191
241
  };
192
242
  ZeroClipboard.prototype.setText = function(newText) {
193
243
  if (newText && newText !== "") {
194
244
  this.options.text = newText;
195
245
  if (this.ready()) this.flashBridge.setText(newText);
196
246
  }
247
+ return this;
197
248
  };
198
249
  ZeroClipboard.prototype.setTitle = function(newTitle) {
199
250
  if (newTitle && newTitle !== "") this.htmlBridge.setAttribute("title", newTitle);
251
+ return this;
200
252
  };
201
253
  ZeroClipboard.prototype.setSize = function(width, height) {
202
254
  if (this.ready()) this.flashBridge.setSize(width, height);
255
+ return this;
203
256
  };
204
257
  ZeroClipboard.prototype.setHandCursor = function(enabled) {
258
+ enabled = typeof enabled === "boolean" ? enabled : !!enabled;
259
+ _setHandCursor.call(this, enabled);
260
+ this.options.forceHandCursor = enabled;
261
+ return this;
262
+ };
263
+ var _setHandCursor = function(enabled) {
205
264
  if (this.ready()) this.flashBridge.setHandCursor(enabled);
206
265
  };
207
- ZeroClipboard.version = "1.1.7";
266
+ ZeroClipboard.version = "1.2.2";
208
267
  var _defaults = {
209
268
  moviePath: "ZeroClipboard.swf",
210
- trustedDomains: null,
269
+ trustedOrigins: null,
211
270
  text: null,
212
271
  hoverClass: "zeroclipboard-is-hover",
213
272
  activeClass: "zeroclipboard-is-active",
214
- allowScriptAccess: "sameDomain"
273
+ allowScriptAccess: "sameDomain",
274
+ useNoCache: true,
275
+ forceHandCursor: false
215
276
  };
216
277
  ZeroClipboard.setDefaults = function(options) {
217
278
  for (var ko in options) _defaults[ko] = options[ko];
@@ -224,22 +285,30 @@
224
285
  };
225
286
  ZeroClipboard.detectFlashSupport = function() {
226
287
  var hasFlash = false;
227
- try {
228
- if (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) {
229
- hasFlash = true;
230
- }
231
- } catch (error) {
232
- if (navigator.mimeTypes["application/x-shockwave-flash"]) {
233
- hasFlash = true;
234
- }
288
+ if (typeof ActiveXObject === "function") {
289
+ try {
290
+ if (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) {
291
+ hasFlash = true;
292
+ }
293
+ } catch (error) {}
294
+ }
295
+ if (!hasFlash && navigator.mimeTypes["application/x-shockwave-flash"]) {
296
+ hasFlash = true;
235
297
  }
236
298
  return hasFlash;
237
299
  };
300
+ var _amdModuleId = null;
301
+ var _cjsModuleId = null;
238
302
  var _bridge = function() {
239
303
  var client = ZeroClipboard.prototype._singleton;
240
304
  var container = document.getElementById("global-zeroclipboard-html-bridge");
241
305
  if (!container) {
242
- var html = ' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="' + client.options.moviePath + _noCache(client.options.moviePath) + '"/> <param name="allowScriptAccess" value="' + client.options.allowScriptAccess + '"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="' + _vars(client.options) + '"/> <embed src="' + client.options.moviePath + _noCache(client.options.moviePath) + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="' + _vars(client.options) + '" scale="exactfit"> </embed> </object>';
306
+ var opts = {};
307
+ for (var ko in client.options) opts[ko] = client.options[ko];
308
+ opts.amdModuleId = _amdModuleId;
309
+ opts.cjsModuleId = _cjsModuleId;
310
+ var flashvars = _vars(opts);
311
+ var html = ' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="' + client.options.moviePath + _noCache(client.options.moviePath, client.options) + '"/> <param name="allowScriptAccess" value="' + client.options.allowScriptAccess + '"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="' + flashvars + '"/> <embed src="' + client.options.moviePath + _noCache(client.options.moviePath, client.options) + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="' + flashvars + '" scale="exactfit"> </embed> </object>';
243
312
  container = document.createElement("div");
244
313
  container.id = "global-zeroclipboard-html-bridge";
245
314
  container.setAttribute("class", "global-zeroclipboard-container");
@@ -264,6 +333,7 @@
264
333
  _removeClass(currentElement, this.options.activeClass);
265
334
  currentElement = null;
266
335
  this.options.text = null;
336
+ return this;
267
337
  };
268
338
  ZeroClipboard.prototype.ready = function() {
269
339
  var ready = this.htmlBridge.getAttribute("data-clipboard-ready");
@@ -278,6 +348,7 @@
278
348
  this.htmlBridge.style.height = pos.height + "px";
279
349
  this.htmlBridge.style.zIndex = pos.zIndex + 1;
280
350
  this.setSize(pos.width, pos.height);
351
+ return this;
281
352
  };
282
353
  ZeroClipboard.dispatch = function(eventName, args) {
283
354
  ZeroClipboard.prototype._singleton.receiveEvent(eventName, args);
@@ -291,6 +362,7 @@
291
362
  if (this.handlers.noflash && !ZeroClipboard.detectFlashSupport()) {
292
363
  this.receiveEvent("onNoFlash", null);
293
364
  }
365
+ return this;
294
366
  };
295
367
  ZeroClipboard.prototype.addEventListener = ZeroClipboard.prototype.on;
296
368
  ZeroClipboard.prototype.off = function(eventName, func) {
@@ -303,11 +375,13 @@
303
375
  }
304
376
  }
305
377
  }
378
+ return this;
306
379
  };
307
380
  ZeroClipboard.prototype.removeEventListener = ZeroClipboard.prototype.off;
308
381
  ZeroClipboard.prototype.receiveEvent = function(eventName, args) {
309
382
  eventName = eventName.toString().toLowerCase().replace(/^on/, "");
310
383
  var element = currentElement;
384
+ var performCallbackAsync = true;
311
385
  switch (eventName) {
312
386
  case "load":
313
387
  if (args && parseFloat(args.flashVersion.replace(",", ".").replace(/[^0-9\.]/gi, "")) < 10) {
@@ -318,19 +392,24 @@
318
392
  }
319
393
  this.htmlBridge.setAttribute("data-clipboard-ready", true);
320
394
  break;
395
+
321
396
  case "mouseover":
322
397
  _addClass(element, this.options.hoverClass);
323
398
  break;
399
+
324
400
  case "mouseout":
325
401
  _removeClass(element, this.options.hoverClass);
326
402
  this.resetBridge();
327
403
  break;
404
+
328
405
  case "mousedown":
329
406
  _addClass(element, this.options.activeClass);
330
407
  break;
408
+
331
409
  case "mouseup":
332
410
  _removeClass(element, this.options.activeClass);
333
411
  break;
412
+
334
413
  case "datarequested":
335
414
  var targetId = element.getAttribute("data-clipboard-target"), targetEl = !targetId ? null : document.getElementById(targetId);
336
415
  if (targetEl) {
@@ -340,17 +419,20 @@
340
419
  var defaultText = element.getAttribute("data-clipboard-text");
341
420
  if (defaultText) this.setText(defaultText);
342
421
  }
422
+ performCallbackAsync = false;
343
423
  break;
424
+
344
425
  case "complete":
345
426
  this.options.text = null;
346
427
  break;
347
428
  }
348
429
  if (this.handlers[eventName]) {
349
430
  var func = this.handlers[eventName];
350
- if (typeof func == "function") {
351
- func.call(element, this, args);
352
- } else if (typeof func == "string") {
353
- window[func].call(element, this, args);
431
+ if (typeof func === "string" && typeof window[func] === "function") {
432
+ func = window[func];
433
+ }
434
+ if (typeof func === "function") {
435
+ _dispatchCallback(func, element, this, args, performCallbackAsync);
354
436
  }
355
437
  }
356
438
  };
@@ -362,6 +444,7 @@
362
444
  _addEventHandler(elements[i], "mouseover", _elementMouseOver);
363
445
  }
364
446
  }
447
+ return this;
365
448
  };
366
449
  ZeroClipboard.prototype.unglue = function(elements) {
367
450
  elements = _prepGlue(elements);
@@ -370,13 +453,16 @@
370
453
  var arrayIndex = _inArray(elements[i], gluedElements);
371
454
  if (arrayIndex != -1) gluedElements.splice(arrayIndex, 1);
372
455
  }
456
+ return this;
373
457
  };
374
- if (typeof module !== "undefined") {
375
- module.exports = ZeroClipboard;
376
- } else if (typeof define === "function" && define.amd) {
377
- define(function() {
458
+ if (typeof define === "function" && define.amd) {
459
+ define([ "require", "exports", "module" ], function(require, exports, module) {
460
+ _amdModuleId = module && module.id || null;
378
461
  return ZeroClipboard;
379
462
  });
463
+ } else if (typeof module === "object" && module && typeof module.exports === "object" && module.exports) {
464
+ _cjsModuleId = module.id || null;
465
+ module.exports = ZeroClipboard;
380
466
  } else {
381
467
  window.ZeroClipboard = ZeroClipboard;
382
468
  }
@@ -1,5 +1,5 @@
1
1
  module Zeroclipboard
2
2
  module Rails
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zeroclipboard-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrik Wenz
@@ -9,20 +9,20 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-09 00:00:00.000000000 Z
12
+ date: 2013-11-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ! '>='
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: '3.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ! '>='
25
+ - - '>='
26
26
  - !ruby/object:Gem::Version
27
27
  version: '3.1'
28
28
  description: ZeroClipboard libary support for Rails
@@ -34,8 +34,8 @@ extra_rdoc_files: []
34
34
  files:
35
35
  - lib/zeroclipboard-rails.rb
36
36
  - lib/zeroclipboard-rails/version.rb
37
- - app/assets/javascripts/zeroclipboard/asset-path.js.erb
38
37
  - app/assets/javascripts/zeroclipboard/ZeroClipboard.js
38
+ - app/assets/javascripts/zeroclipboard/asset-path.js.erb
39
39
  - app/assets/javascripts/zeroclipboard.js
40
40
  - app/assets/images/ZeroClipboard.swf
41
41
  - LICENSE
@@ -50,18 +50,19 @@ require_paths:
50
50
  - lib
51
51
  required_ruby_version: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ! '>='
53
+ - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ! '>='
58
+ - - '>='
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  requirements: []
62
62
  rubyforge_project:
63
- rubygems_version: 2.0.7
63
+ rubygems_version: 2.0.3
64
64
  signing_key:
65
65
  specification_version: 4
66
66
  summary: Adds the Javascript ZeroClipboard libary to Rails
67
67
  test_files: []
68
+ has_rdoc: