@@ -6,8 +6,10 @@ import { isNode } from './common.js';
6
6
function throwResolveError ( relUrl , parentUrl ) {
7
7
throw new RangeError ( 'Unable to resolve "' + relUrl + '" to ' + parentUrl ) ;
8
8
}
9
+ var backslashRegEx = / \\ / g;
9
10
export function resolveIfNotPlain ( relUrl , parentUrl ) {
10
- relUrl = relUrl . trim ( ) ;
11
+ if ( relUrl [ 0 ] === ' ' || relUrl [ relUrl . length - 1 ] === ' ' )
12
+ relUrl = relUrl . trim ( ) ;
11
13
var parentProtocol = parentUrl && parentUrl . substr ( 0 , parentUrl . indexOf ( ':' ) + 1 ) ;
12
14
13
15
var firstChar = relUrl [ 0 ] ;
@@ -17,12 +19,16 @@ export function resolveIfNotPlain (relUrl, parentUrl) {
17
19
if ( firstChar === '/' && secondChar === '/' ) {
18
20
if ( ! parentProtocol )
19
21
throwResolveError ( relUrl , parentUrl ) ;
22
+ if ( relUrl . indexOf ( '\\' ) !== - 1 )
23
+ relUrl = relUrl . replace ( backslashRegEx , '/' ) ;
20
24
return parentProtocol + relUrl ;
21
25
}
22
26
// relative-url
23
27
else if ( firstChar === '.' && ( secondChar === '/' || secondChar === '.' && ( relUrl [ 2 ] === '/' || relUrl . length === 2 && ( relUrl += '/' ) ) ||
24
28
relUrl . length === 1 && ( relUrl += '/' ) ) ||
25
29
firstChar === '/' ) {
30
+ if ( relUrl . indexOf ( '\\' ) !== - 1 )
31
+ relUrl = relUrl . replace ( backslashRegEx , '/' ) ;
26
32
var parentIsPlain = ! parentProtocol || parentUrl [ parentProtocol . length ] !== '/' ;
27
33
28
34
// read pathname from parent if a URL
@@ -115,7 +121,7 @@ export function resolveIfNotPlain (relUrl, parentUrl) {
115
121
if ( isNode ) {
116
122
// C:\x becomes file:///c:/x (we don't support C|\x)
117
123
if ( relUrl [ 1 ] === ':' && relUrl [ 2 ] === '\\' && relUrl [ 0 ] . match ( / [ a - z ] / i) )
118
- return 'file:///' + relUrl . replace ( / \\ / g , '/' ) ;
124
+ return 'file:///' + relUrl . replace ( backslashRegEx , '/' ) ;
119
125
}
120
126
return relUrl ;
121
127
}
0 commit comments