Browse Source

url: add '.' '+' and '-' in url protocol

- Based on BNF from RFC 1738 section 5.
- Added tests to cover svn+ssh and some other examples
v0.7.4-release
Jordan Sissel 13 years ago
committed by Ben Noordhuis
parent
commit
358f0ce96b
  1. 2
      lib/url.js
  2. 76
      test/simple/test-url.js

2
lib/url.js

@ -30,7 +30,7 @@ exports.format = urlFormat;
// define these here so at least they only have to be
// compiled once on the first module load.
var protocolPattern = /^([a-z0-9+]+:)/i,
var protocolPattern = /^([a-z0-9.+-]+:)/i,
portPattern = /:[0-9]+$/,
// RFC 2396: characters reserved for delimiting URLs.
delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'],

76
test/simple/test-url.js

@ -333,6 +333,49 @@ var parseTests = {
'hash' : '#bar',
'path': '/path?search=foo'
},
'svn+ssh://foo/bar': {
'href': 'svn+ssh://foo/bar',
'host': 'foo',
'hostname': 'foo',
'protocol': 'svn+ssh:',
'pathname': '/bar',
'path': '/bar',
'slashes': true
},
'dash-test://foo/bar': {
'href': 'dash-test://foo/bar',
'host': 'foo',
'hostname': 'foo',
'protocol': 'dash-test:',
'pathname': '/bar',
'path': '/bar',
'slashes': true
},
'dash-test:foo/bar': {
'href': 'dash-test:foo/bar',
'host': 'foo',
'hostname': 'foo',
'protocol': 'dash-test:',
'pathname': '/bar',
'path': '/bar'
},
'dot.test://foo/bar': {
'href': 'dot.test://foo/bar',
'host': 'foo',
'hostname': 'foo',
'protocol': 'dot.test:',
'pathname': '/bar',
'path': '/bar',
'slashes': true
},
'dot.test:foo/bar': {
'href': 'dot.test:foo/bar',
'host': 'foo',
'hostname': 'foo',
'protocol': 'dot.test:',
'pathname': '/bar',
'path': '/bar'
},
// IDNA tests
'http://www.日本語.com/' : {
'href': 'http://www.xn--wgv71a119e.com/',
@ -574,6 +617,39 @@ var formatTests = {
'hostname': 'foo',
'protocol': 'http:',
'pathname': '/'
},
'svn+ssh://foo/bar': {
'href': 'svn+ssh://foo/bar',
'hostname': 'foo',
'protocol': 'svn+ssh:',
'pathname': '/bar',
'slashes': true
},
'dash-test://foo/bar': {
'href': 'dash-test://foo/bar',
'hostname': 'foo',
'protocol': 'dash-test:',
'pathname': '/bar',
'slashes': true
},
'dash-test:foo/bar': {
'href': 'dash-test:foo/bar',
'hostname': 'foo',
'protocol': 'dash-test:',
'pathname': '/bar'
},
'dot.test://foo/bar': {
'href': 'dot.test://foo/bar',
'hostname': 'foo',
'protocol': 'dot.test:',
'pathname': '/bar',
'slashes': true
},
'dot.test:foo/bar': {
'href': 'dot.test:foo/bar',
'hostname': 'foo',
'protocol': 'dot.test:',
'pathname': '/bar'
}
};
for (var u in formatTests) {

Loading…
Cancel
Save