4
4
*/
5
5
var loaderUtils = require ( 'loader-utils' ) ;
6
6
7
+ var REGEX_STYLE = / < s t y l e [ \s \S ] * ?> [ \s \S ] * ?< \/ s t y l e > / i
8
+ var REGEX_DECLARATION = / ^ \s * < \? x m l [ ^ > ] * > \s * / i
9
+
10
+ var REGEX_DOUBLE_QUOTE = / " / g
11
+ var REGEX_MULTIPLE_SPACES = / \s + / g
12
+ var REGEX_UNSAFE_CHARS = / [ { } \| \\ \^ ~ \[ \] ` " < > # % ] / g
13
+
7
14
module . exports = function ( content ) {
8
15
this . cacheable && this . cacheable ( ) ;
9
16
@@ -15,10 +22,10 @@ module.exports = function(content) {
15
22
if ( limit <= 0 || content . length < limit ) {
16
23
var newContent = content . toString ( 'utf8' ) ;
17
24
18
- var hasStyleElement = / < s t y l e [ \s \S ] * ? > [ \s \S ] * ? < \/ s t y l e > / i . test ( newContent )
25
+ var hasStyleElement = REGEX_STYLE . test ( newContent )
19
26
20
27
if ( query . stripdeclarations ) {
21
- newContent = newContent . replace ( / ^ \s * < \? x m l [ ^ > ] * > \s * / i , "" ) ;
28
+ newContent = newContent . replace ( REGEX_DECLARATION , "" ) ;
22
29
}
23
30
24
31
var data ;
@@ -28,9 +35,9 @@ module.exports = function(content) {
28
35
}
29
36
data = "data:image/svg+xml;base64," + newContent . toString ( "base64" ) ;
30
37
} else {
31
- newContent = newContent . replace ( / " / g , "'" ) ;
32
- newContent = newContent . replace ( / \s + / g , " " ) ;
33
- newContent = newContent . replace ( / [ { } \| \\ \^ ~ \[ \] ` " < > # % ] / g , function ( match ) {
38
+ newContent = newContent . replace ( REGEX_DOUBLE_QUOTE , "'" ) ;
39
+ newContent = newContent . replace ( REGEX_MULTIPLE_SPACES , " " ) ;
40
+ newContent = newContent . replace ( REGEX_UNSAFE_CHARS , function ( match ) {
34
41
return '%' + match [ 0 ] . charCodeAt ( 0 ) . toString ( 16 ) . toUpperCase ( ) ;
35
42
} ) ;
36
43
0 commit comments