uri-js-rails 1.7.4 → 1.10.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@
2
2
  * URI.js - Mutating URLs
3
3
  * jQuery Plugin
4
4
  *
5
- * Version: 1.7.4
5
+ * Version: 1.10.2
6
6
  *
7
7
  * Author: Rodney Rehm
8
8
  * Web: http://medialize.github.com/URI.js/jquery-uri-plugin.html
@@ -13,11 +13,53 @@
13
13
  *
14
14
  */
15
15
 
16
- (function($, undefined){
17
-
18
- var URI = typeof module !== "undefined" && module.exports
19
- ? require('./URIjs')
20
- : window.URI;
16
+ (function (root, factory) {
17
+ // https://github.com/umdjs/umd/blob/master/returnExports.js
18
+ if (typeof exports === 'object') {
19
+ // Node
20
+ module.exports = factory(require('jquery', './URI'));
21
+ } else if (typeof define === 'function' && define.amd) {
22
+ // AMD. Register as an anonymous module.
23
+ define(['jquery', './URI'], factory);
24
+ } else {
25
+ // Browser globals (root is window)
26
+ factory(root.jQuery, root.URI);
27
+ }
28
+ }(this, function ($, URI) {
29
+ "use strict";
30
+
31
+ var comparable = {};
32
+ var compare = {
33
+ // equals
34
+ '=': function(value, target) {
35
+ return value === target;
36
+ },
37
+ // ~= translates to value.match((?:^|\s)target(?:\s|$)) which is useless for URIs
38
+ // |= translates to value.match((?:\b)target(?:-|\s|$)) which is useless for URIs
39
+ // begins with
40
+ '^=': function(value, target, property) {
41
+ return !!(value + "").match(new RegExp('^' + escapeRegEx(target), 'i'));
42
+ },
43
+ // ends with
44
+ '$=': function(value, target, property) {
45
+ return !!(value + "").match(new RegExp(escapeRegEx(target) + '$', 'i'));
46
+ },
47
+ // contains
48
+ '*=': function(value, target, property) {
49
+ if (property == 'directory') {
50
+ // add trailing slash so /dir/ will match the deep-end as well
51
+ value += '/';
52
+ }
53
+
54
+ return !!(value + "").match(new RegExp(escapeRegEx(target), 'i'));
55
+ },
56
+ 'equals:': function(uri, target) {
57
+ return uri.equals(target);
58
+ },
59
+ 'is:': function(uri, target) {
60
+ return uri.is(target);
61
+ }
62
+ };
21
63
 
22
64
  function escapeRegEx(string) {
23
65
  // https://github.com/medialize/URI.js/commit/85ac21783c11f8ccab06106dba9735a31a86924d#commitcomment-821963
@@ -42,66 +84,55 @@ function getUriProperty(elem) {
42
84
  return undefined;
43
85
  }
44
86
 
87
+ if (!property) {
88
+ // you can set any property you wish. So for elements that don't have
89
+ // either of [src, href, action] we simply return src.
90
+ // https://github.com/medialize/URI.js/issues/69
91
+ return 'src';
92
+ }
93
+
45
94
  return property;
46
95
  }
47
96
 
48
- var pseudo = /^([a-zA-Z]+)\s*([\^\$*]?=|:)\s*(['"]?)(.+)\3|^\s*([a-zA-Z0-9]+)\s*$/,
49
- comparable = {},
50
- // https://developer.mozilla.org/en/CSS/Attribute_selectors
51
- compare = {
52
- // equals
53
- '=': function(value, target) {
54
- return value === target;
97
+ function generateAccessor(property) {
98
+ return {
99
+ get: function(elem) {
100
+ return $(elem).uri()[property]();
55
101
  },
56
- // ~= translates to value.match((?:^|\s)target(?:\s|$)) which is useless for URIs
57
- // |= translates to value.match((?:\b)target(?:-|\s|$)) which is useless for URIs
58
- // begins with
59
- '^=': function(value, target, property) {
60
- return !!(value + "").match(new RegExp('^' + escapeRegEx(target), 'i'));
61
- },
62
- // ends with
63
- '$=': function(value, target, property) {
64
- return !!(value + "").match(new RegExp(escapeRegEx(target) + '$', 'i'));
65
- },
66
- // contains
67
- '*=': function(value, target, property) {
68
- if (property == 'directory') {
69
- // add trailing slash so /dir/ will match the deep-end as well
70
- value += '/';
71
- }
72
-
73
- return !!(value + "").match(new RegExp(escapeRegEx(target), 'i'));
74
- },
75
- 'equals:': function(uri, target) {
76
- return uri.equals(target);
77
- },
78
- 'is:': function(uri, target) {
79
- return uri.is(target);
102
+ set: function(elem, value) {
103
+ $(elem).uri()[property](value);
104
+ return value;
80
105
  }
81
- },
82
- generateAccessor = function(property) {
83
- return {
84
- get: function(elem) {
85
- return $(elem).uri()[property]();
86
- },
87
- set: function(elem, value) {
88
- $(elem).uri()[property](value);
89
- return value;
90
- }
91
- };
92
106
  };
107
+ };
93
108
 
94
109
  // populate lookup table and register $.attr('uri:accessor') handlers
95
- $.each('authority directory domain filename fragment hash host hostname href password path pathname port protocol query scheme search subdomain suffix tld username'.split(" "), function(k, v) {
110
+ $.each('authority directory domain filename fragment hash host hostname href password path pathname port protocol query resource scheme search subdomain suffix tld username'.split(" "), function(k, v) {
96
111
  comparable[v] = true;
97
112
  $.attrHooks['uri:' + v] = generateAccessor(v);
98
113
  });
99
114
 
115
+ // pipe $.attr('src') and $.attr('href') through URI.js
116
+ var _attrHooks = {
117
+ get: function(elem) {
118
+ return $(elem).uri();
119
+ },
120
+ set: function(elem, value) {
121
+ return $(elem).uri().href(value).toString();
122
+ }
123
+ };
124
+ $.each(['src', 'href', 'action', 'uri'], function(k, v) {
125
+ $.attrHooks[v] = {
126
+ set: _attrHooks.set
127
+ };
128
+ });
129
+ $.attrHooks.uri.get = _attrHooks.get;
130
+
100
131
  // general URI accessor
101
132
  $.fn.uri = function(uri) {
102
- var $this = this.first(),
103
- elem = $this.get(0),
104
- property = getUriProperty(elem);
133
+ var $this = this.first();
134
+ var elem = $this.get(0);
135
+ var property = getUriProperty(elem);
105
136
 
106
137
  if (!property) {
107
138
  throw new Error('Element "' + elem.nodeName + '" does not have either property: href, src, action');
@@ -121,7 +152,7 @@ $.fn.uri = function(uri) {
121
152
  if (uri) {
122
153
  return uri;
123
154
  } else {
124
- uri = URI($this.attr(property));
155
+ uri = URI($this.attr(property));
125
156
  }
126
157
  }
127
158
 
@@ -150,22 +181,20 @@ URI.prototype.build = function(deferBuild) {
150
181
  return this;
151
182
  };
152
183
 
153
- // :uri() pseudo-selector for $.find(), $.filter() $.is(), et al.
154
- $.expr.filters.uri = function(elem, index, matches) {
155
- // documentation on this is scarce, look into
156
- // - https://github.com/jquery/sizzle/wiki/Sizzle-Home
157
- // - https://github.com/jquery/sizzle/blob/master/sizzle.js#L626
158
-
184
+ // add :uri() pseudo class selector to sizzle
185
+ var uriSizzle;
186
+ var pseudoArgs = /^([a-zA-Z]+)\s*([\^\$*]?=|:)\s*(['"]?)(.+)\3|^\s*([a-zA-Z0-9]+)\s*$/;
187
+ function uriPseudo (elem, text) {
188
+ var match, property, uri;
189
+
159
190
  // skip anything without src|href|action and bad :uri() syntax
160
- if (!getUriProperty(elem) || !matches[3]) {
191
+ if (!getUriProperty(elem) || !text) {
161
192
  return false;
162
193
  }
163
194
 
164
- var t = matches[3].match(pseudo),
165
- property,
166
- uri;
195
+ match = text.match(pseudoArgs);
167
196
 
168
- if (!t || (!t[5] && t[2] !== ':' && !compare[t[2]])) {
197
+ if (!match || (!match[5] && match[2] !== ':' && !compare[match[2]])) {
169
198
  // abort because the given selector cannot be executed
170
199
  // filers seem to fail silently
171
200
  return false;
@@ -173,44 +202,45 @@ $.expr.filters.uri = function(elem, index, matches) {
173
202
 
174
203
  uri = $(elem).uri();
175
204
 
176
- if (t[5]) {
177
- return uri.is(t[5]);
178
- } else if (t[2] === ':') {
179
- property = t[1].toLowerCase() + ':';
205
+ if (match[5]) {
206
+ return uri.is(match[5]);
207
+ } else if (match[2] === ':') {
208
+ property = match[1].toLowerCase() + ':';
180
209
  if (!compare[property]) {
181
210
  // filers seem to fail silently
182
211
  return false;
183
212
  }
184
213
 
185
- return compare[property](uri, t[4]);
214
+ return compare[property](uri, match[4]);
186
215
  } else {
187
- property = t[1].toLowerCase();
216
+ property = match[1].toLowerCase();
188
217
  if (!comparable[property]) {
189
218
  // filers seem to fail silently
190
219
  return false;
191
220
  }
192
221
 
193
- return compare[t[2]](uri[property](), t[4], property);
222
+ return compare[match[2]](uri[property](), match[4], property);
194
223
  }
195
224
 
196
225
  return false;
197
- };
226
+ }
198
227
 
199
- // pipe $.attr('src') and $.attr('href') through URI.js
200
- var _attrHooks = {
201
- get: function(elem) {
202
- return $(elem).uri();
203
- },
204
- set: function(elem, value) {
205
- return $(elem).uri().href(value).toString();
206
- }
207
- };
208
- $.each(['src', 'href', 'action', 'uri'], function(k, v) {
209
- $.attrHooks[v] = {
210
- set: _attrHooks.set
228
+ if ($.expr.createPseudo) {
229
+ // jQuery >= 1.8
230
+ uriSizzle = $.expr.createPseudo(function (text) {
231
+ return function (elem) {
232
+ return uriPseudo(elem, text);
233
+ };
234
+ });
235
+ } else {
236
+ // jQuery < 1.8
237
+ uriSizzle = function (elem, i, match) {
238
+ return uriPseudo(elem, match[3]);
211
239
  };
212
- });
213
- $.attrHooks.uri.get = _attrHooks.get;
240
+ }
214
241
 
242
+ $.expr[":"].uri = uriSizzle;
215
243
 
216
- })(jQuery);
244
+ // extending existing object rather than defining something new
245
+ return {};
246
+ }));
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uri-js-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.4
5
- prerelease:
4
+ version: 1.10.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Robin Wenglewski
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-11-04 00:00:00.000000000 Z
11
+ date: 2013-05-16 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: ''
15
14
  email:
@@ -31,27 +30,26 @@ files:
31
30
  - vendor/assets/javascripts/jquery.URI.js
32
31
  homepage: ''
33
32
  licenses: []
33
+ metadata: {}
34
34
  post_install_message:
35
35
  rdoc_options: []
36
36
  require_paths:
37
37
  - lib
38
38
  required_ruby_version: !ruby/object:Gem::Requirement
39
- none: false
40
39
  requirements:
41
- - - ! '>='
40
+ - - '>='
42
41
  - !ruby/object:Gem::Version
43
42
  version: '0'
44
43
  required_rubygems_version: !ruby/object:Gem::Requirement
45
- none: false
46
44
  requirements:
47
- - - ! '>='
45
+ - - '>='
48
46
  - !ruby/object:Gem::Version
49
47
  version: '0'
50
48
  requirements: []
51
49
  rubyforge_project:
52
- rubygems_version: 1.8.24
50
+ rubygems_version: 2.0.3
53
51
  signing_key:
54
- specification_version: 3
52
+ specification_version: 4
55
53
  summary: URI.js for rails
56
54
  test_files: []
57
55
  has_rdoc: