@@ -9,7 +9,9 @@ module.exports = function () {
9
9
}
10
10
11
11
function transform ( node ) {
12
- if ( node . tag === 'img' && node . attrs ) {
12
+ const tags = [ 'img' , 'source' ]
13
+
14
+ if ( tags . indexOf ( node . tag ) !== - 1 && node . attrs ) {
13
15
node . attrs . forEach ( attr => {
14
16
if ( attr . name === 'srcset' ) {
15
17
// same logic as in transform-require.js
@@ -22,15 +24,16 @@ function transform (node) {
22
24
// http://w3c.github.io/html/semantics-embedded-content.html#ref-for-image-candidate-string-5
23
25
24
26
const spaceCharacters = / [ \t \n \f \r ] + /
27
+ const escapedSpaceCharacters = / ^ ( [ \t \n \f \r ] | \\ t | \\ n | \\ f | \\ r ) * /
25
28
26
29
const imageCandidates = value . substr ( 1 , value . length - 2 ) . split ( ',' ) . map ( s => {
27
- const [ url , descriptor ] = s . trim ( ) . split ( spaceCharacters , 2 )
30
+ const [ url , descriptor ] = s . replace ( escapedSpaceCharacters , '' ) . split ( spaceCharacters , 2 )
28
31
return { require : urlToRequire ( url ) , descriptor : descriptor }
29
32
} )
30
33
31
34
let code = ''
32
35
imageCandidates . forEach ( ( o , i , a ) => {
33
- code += o . require + ' + " ' + o . descriptor + ( i < a . length - 1 ? ',' : '' ) + '"'
36
+ code += o . require + ' + " ' + o . descriptor + ( i < a . length - 1 ? ', " + ' : '"' )
34
37
} )
35
38
36
39
attr . value = code
@@ -39,14 +42,15 @@ function transform (node) {
39
42
}
40
43
}
41
44
42
- function urlToRequire ( url ) {
43
- // same logic as in transform-require.js
44
- var firstChar = url . charAt ( 0 )
45
- if ( firstChar === '.' || firstChar === '~' ) {
46
- if ( firstChar === '~' ) {
47
- var secondChar = url . charAt ( 1 )
48
- url = '"' + url . slice ( secondChar === '/' ? 2 : 1 )
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
+
49
55
}
50
- return 'require("' + url + '")'
51
56
}
52
- }
0 commit comments