@@ -10,7 +10,7 @@ module.exports = function () {
10
10
11
11
function transform ( node ) {
12
12
const tags = [ 'img' , 'source' ]
13
-
13
+
14
14
if ( tags . indexOf ( node . tag ) !== - 1 && node . attrs ) {
15
15
node . attrs . forEach ( attr => {
16
16
if ( attr . name === 'srcset' ) {
@@ -22,12 +22,11 @@ function transform (node) {
22
22
}
23
23
24
24
// http://w3c.github.io/html/semantics-embedded-content.html#ref-for-image-candidate-string-5
25
-
26
- const spaceCharacters = / [ \t \n \f \r ] + /
27
- const escapedSpaceCharacters = / ^ ( [ \t \n \f \r ] | \\ t | \\ n | \\ f | \\ r ) * /
25
+ const escapedSpaceCharacters = / ( | \\ t | \\ n | \\ f | \\ r ) + / g
28
26
29
27
const imageCandidates = value . substr ( 1 , value . length - 2 ) . split ( ',' ) . map ( s => {
30
- const [ url , descriptor ] = s . replace ( escapedSpaceCharacters , '' ) . split ( spaceCharacters , 2 )
28
+ // The attribute value arrives here with all whitespace, except normal spaces, represented by escape sequences
29
+ const [ url , descriptor ] = s . replace ( escapedSpaceCharacters , ' ' ) . trim ( ) . split ( ' ' , 2 )
31
30
return { require : urlToRequire ( url ) , descriptor : descriptor }
32
31
} )
33
32
@@ -42,15 +41,14 @@ function transform (node) {
42
41
}
43
42
}
44
43
45
- function urlToRequire ( url ) {
46
- // same logic as in transform-require.js
47
- var firstChar = url . charAt ( 0 )
48
- if ( firstChar === '.' || firstChar === '~' ) {
49
- if ( firstChar === '~' ) {
50
- var secondChar = url . charAt ( 1 )
51
- url = '"' + url . slice ( secondChar === '/' ? 2 : 1 )
52
- }
53
- return `require("${ url } ")`
54
-
44
+ function urlToRequire ( url ) {
45
+ // same logic as in transform-require.js
46
+ var firstChar = url . charAt ( 0 )
47
+ if ( firstChar === '.' || firstChar === '~' ) {
48
+ if ( firstChar === '~' ) {
49
+ var secondChar = url . charAt ( 1 )
50
+ url = '"' + url . slice ( secondChar === '/' ? 2 : 1 )
55
51
}
52
+ return `require("${ url } ")`
56
53
}
54
+ }
0 commit comments