uri-js-rails 1.7.4 → 1.10.2

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