Skip to content

Commit 219475f

Browse files
committed
Added fix for query (?) or hash (#) params in the form http://domain.com?poo to return '' empty string instead of undefined.
-updates tests to use deepEqual which uses === instead of == for comparison -add some tests for query (?) and hash (#) params
1 parent 54b0b0a commit 219475f

File tree

5 files changed

+72
-60
lines changed

5 files changed

+72
-60
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "url",
3-
"version": "1.8.3",
3+
"version": "1.8.4",
44
"description": "A simple, lightweight url parser for JavaScript (~1.6 Kb minified, ~0.6Kb gzipped).",
55
"main": "url.js",
66
"repository": {

tests.js

Lines changed: 68 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -5,110 +5,122 @@ var url = 'http://rob:abcd1234@www.domain.com/path/index.html?query1=test&silly=
55
module('url');
66

77
test('url', function() {
8-
equal( window.url( ), window.location.href );
8+
deepEqual( window.url( ), window.location.href );
99
});
1010

1111
test('domain', function() {
12-
equal( window.url( 'domain', url ), 'domain.com' );
12+
deepEqual( window.url( 'domain', url ), 'domain.com' );
1313
});
1414

1515
test('hostname', function() {
16-
equal( window.url( 'hostname', url ), 'www.domain.com' );
16+
deepEqual( window.url( 'hostname', url ), 'www.domain.com' );
1717
});
1818

1919
test('sub', function() {
20-
equal( window.url( 'sub', url ), 'www' );
20+
deepEqual( window.url( 'sub', url ), 'www' );
2121
});
2222

2323
test('domain parts', function() {
24-
equal( window.url( '.0', url ), '' );
25-
equal( window.url( '.1', url ), 'www' );
26-
equal( window.url( '.2', url ), 'domain' );
27-
equal( window.url( '.-1', url ), 'com' );
24+
deepEqual( window.url( '.0', url ), '' );
25+
deepEqual( window.url( '.1', url ), 'www' );
26+
deepEqual( window.url( '.2', url ), 'domain' );
27+
deepEqual( window.url( '.-1', url ), 'com' );
2828
});
2929

3030
test('auth', function() {
31-
equal( window.url( 'auth', url ), 'rob:abcd1234' );
31+
deepEqual( window.url( 'auth', url ), 'rob:abcd1234' );
3232
});
3333

3434
test('user', function() {
35-
equal( window.url( 'user', url ), 'rob' );
35+
deepEqual( window.url( 'user', url ), 'rob' );
3636
});
3737

3838
test('pass', function() {
39-
equal( window.url( 'pass', url ), 'abcd1234' );
39+
deepEqual( window.url( 'pass', url ), 'abcd1234' );
4040
});
4141

4242
test('port', function() {
43-
equal( window.url( 'port', url ), 80 );
43+
deepEqual( window.url( 'port', url ), '80' );
4444
});
4545

4646
test('protocol', function() {
47-
equal( window.url( 'protocol', url ), 'http' );
47+
deepEqual( window.url( 'protocol', url ), 'http' );
4848
});
4949

5050
test('path', function() {
51-
equal( window.url( 'path', url ), '/path/index.html' );
52-
equal( window.url( 'path', 'http://www.domain.com/first/second' ), '/first/second' );
53-
equal( window.url( 'path', 'http://www.domain.com/first/second/' ), '/first/second/' );
54-
equal( window.url( 'path', 'http://www.domain.com:8080/first/second' ), '/first/second' );
55-
equal( window.url( 'path', 'http://www.domain.com:8080/first/second/' ), '/first/second/' );
56-
equal( window.url( 'path', 'http://www.domain.com/first/second?test=foo' ), '/first/second' );
57-
equal( window.url( 'path', 'http://www.domain.com/first/second/?test=foo' ), '/first/second/' );
58-
equal( window.url( 'path', 'http://www.domain.com/path#anchor' ), '/path' );
59-
equal( window.url( 'path', 'http://www.domain.com/path/#anchor' ), '/path/' );
60-
equal( window.url( 'path', 'http://www.domain.com' ), '' );
61-
equal( window.url( 'path', 'http://www.domain.com/' ), '/' );
62-
equal( window.url( 'path', 'http://www.domain.com#anchor' ), '' );
63-
equal( window.url( 'path', 'http://www.domain.com/#anchor' ), '/' );
64-
equal( window.url( 'path', 'http://www.domain.com?test=foo' ), '' );
65-
equal( window.url( 'path', 'http://www.domain.com/?test=foo' ), '/' );
66-
equal( window.url( 'path', 'http://www.domain.com:80' ), '' );
67-
equal( window.url( 'path', 'http://www.domain.com:80/' ), '/' );
68-
equal( window.url( 'path', 'http://www.domain.com:80#anchor' ), '' );
69-
equal( window.url( 'path', 'http://www.domain.com:80/#anchor' ), '/' );
70-
equal( window.url( 'path', 'http://www.domain.com:80?test=foo' ), '' );
71-
equal( window.url( 'path', 'http://www.domain.com:80/?test=foo' ), '/' );
51+
deepEqual( window.url( 'path', url ), '/path/index.html' );
52+
deepEqual( window.url( 'path', 'http://www.domain.com/first/second' ), '/first/second' );
53+
deepEqual( window.url( 'path', 'http://www.domain.com/first/second/' ), '/first/second/' );
54+
deepEqual( window.url( 'path', 'http://www.domain.com:8080/first/second' ), '/first/second' );
55+
deepEqual( window.url( 'path', 'http://www.domain.com:8080/first/second/' ), '/first/second/' );
56+
deepEqual( window.url( 'path', 'http://www.domain.com/first/second?test=foo' ), '/first/second' );
57+
deepEqual( window.url( 'path', 'http://www.domain.com/first/second/?test=foo' ), '/first/second/' );
58+
deepEqual( window.url( 'path', 'http://www.domain.com/path#anchor' ), '/path' );
59+
deepEqual( window.url( 'path', 'http://www.domain.com/path/#anchor' ), '/path/' );
60+
deepEqual( window.url( 'path', 'http://www.domain.com' ), '' );
61+
deepEqual( window.url( 'path', 'http://www.domain.com/' ), '/' );
62+
deepEqual( window.url( 'path', 'http://www.domain.com#anchor' ), '' );
63+
deepEqual( window.url( 'path', 'http://www.domain.com/#anchor' ), '/' );
64+
deepEqual( window.url( 'path', 'http://www.domain.com?test=foo' ), '' );
65+
deepEqual( window.url( 'path', 'http://www.domain.com/?test=foo' ), '/' );
66+
deepEqual( window.url( 'path', 'http://www.domain.com:80' ), '' );
67+
deepEqual( window.url( 'path', 'http://www.domain.com:80/' ), '/' );
68+
deepEqual( window.url( 'path', 'http://www.domain.com:80#anchor' ), '' );
69+
deepEqual( window.url( 'path', 'http://www.domain.com:80/#anchor' ), '/' );
70+
deepEqual( window.url( 'path', 'http://www.domain.com:80?test=foo' ), '' );
71+
deepEqual( window.url( 'path', 'http://www.domain.com:80/?test=foo' ), '/' );
7272
});
7373

7474
test('file', function() {
75-
equal( window.url( 'file', url ), 'index.html' );
76-
equal( window.url( 'filename', url ), 'index' );
77-
equal( window.url( 'fileext', url ), 'html' );
75+
deepEqual( window.url( 'file', url ), 'index.html' );
76+
deepEqual( window.url( 'filename', url ), 'index' );
77+
deepEqual( window.url( 'fileext', url ), 'html' );
7878
});
7979

8080
test('url parts', function() {
81-
equal( window.url( '1', url ), 'path' );
82-
equal( window.url( 1, url ), 'path' );
81+
deepEqual( window.url( '1', url ), 'path' );
82+
deepEqual( window.url( 1, url ), 'path' );
8383

84-
equal( window.url( '2', url ), 'index.html' );
85-
equal( window.url( '3', url ), '' );
86-
equal( window.url( '-1', url ), 'index.html' );
84+
deepEqual( window.url( '2', url ), 'index.html' );
85+
deepEqual( window.url( '3', url ), '' );
86+
deepEqual( window.url( '-1', url ), 'index.html' );
8787

88-
equal( window.url( '1', 'http://www.domain.com/first/second' ), 'first' );
89-
equal( window.url( '1', 'http://www.domain.com/first/second/' ), 'first' );
90-
equal( window.url( '-1', 'http://www.domain.com/first/second?test=foo' ), 'second' );
91-
equal( window.url( '-1', 'http://www.domain.com/first/second/?test=foo' ), 'second' );
88+
deepEqual( window.url( '1', 'http://www.domain.com/first/second' ), 'first' );
89+
deepEqual( window.url( '1', 'http://www.domain.com/first/second/' ), 'first' );
90+
deepEqual( window.url( '-1', 'http://www.domain.com/first/second?test=foo' ), 'second' );
91+
deepEqual( window.url( '-1', 'http://www.domain.com/first/second/?test=foo' ), 'second' );
9292
});
9393

9494
test('query string', function() {
95-
equal( window.url( '?', url ), 'query1=test&silly=willy' );
96-
equal( window.url( '?silly', url ), 'willy' );
97-
equal( window.url( '?poo', url ), null );
95+
deepEqual( window.url( '?', url ), 'query1=test&silly=willy' );
96+
deepEqual( window.url( '?silly', url ), 'willy' );
97+
deepEqual( window.url( '?poo', url ), null );
98+
99+
deepEqual( window.url( '?poo', 'http://domain.com?poo=' ), '' );
100+
deepEqual( window.url( '?poo', 'http://domain.com/?poo' ), '' );
101+
deepEqual( window.url( '?poo', 'http://domain.com?poo' ), '' );
102+
deepEqual( window.url( '?poo', 'http://domain.com?' ), null );
103+
deepEqual( window.url( '?poo', 'http://domain.com' ), null );
98104
});
99105

100106
test('url fragment', function() {
101-
equal( window.url( '#', url ), 'test=hash&chucky=cheese' );
102-
equal( window.url( '#chucky', url ), 'cheese' );
103-
equal( window.url( '#poo', url ), null );
107+
deepEqual( window.url( '#', url ), 'test=hash&chucky=cheese' );
108+
deepEqual( window.url( '#chucky', url ), 'cheese' );
109+
deepEqual( window.url( '#poo', url ), null );
110+
111+
deepEqual( window.url( '#poo', 'http://domain.com#poo=' ), '' );
112+
deepEqual( window.url( '#poo', 'http://domain.com/#poo' ), '' );
113+
deepEqual( window.url( '#poo', 'http://domain.com#poo' ), '' );
114+
deepEqual( window.url( '#poo', 'http://domain.com#' ), null );
115+
deepEqual( window.url( '#poo', 'http://domain.com' ), null );
104116
});
105117

106118
if (typeof jQuery !== 'undefined') {
107119
test('jQuery', function() {
108-
equal( $.url( 'domain', url ), 'domain.com' );
109-
equal( $.url( 'path', url ), '/path/index.html' );
110-
equal( $.url( '?silly', url ), 'willy' );
111-
equal( $.url( '#poo', url ), null );
120+
deepEqual( $.url( 'domain', url ), 'domain.com' );
121+
deepEqual( $.url( 'path', url ), '/path/index.html' );
122+
deepEqual( $.url( '?silly', url ), 'willy' );
123+
deepEqual( $.url( '#poo', url ), null );
112124
});
113125
}
114126

url.jquery.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"websanova",
77
"url"
88
],
9-
"version": "1.8.3",
9+
"version": "1.8.4",
1010
"author": {
1111
"name": "Websanova",
1212
"email": "rob@websanova.com",

url.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ window.url = (function() {
6161
for(var i=0,ii=params.length; i<ii; i++)
6262
{
6363
param = params[i].split('=');
64-
if(param[0] === arg) { return param[1]; }
64+
if(param[0] === arg) { return param[1] || ''; }
6565
}
6666

6767
return null;

url.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)