1
1
const parse = require ( "tns-core-modules/css" ) . parse ;
2
+ const urlPattern = / ( ' | " ) ( .* ?) \1/ ;
2
3
3
4
module . exports = function ( content , map ) {
4
5
const ast = parse ( content ) ;
@@ -7,14 +8,13 @@ module.exports = function (content, map) {
7
8
getImportsFrom ( ast )
8
9
. map ( mapURI )
9
10
. forEach ( ( { uri, requireURI } ) => {
10
- dependencies . push ( `global.registerModule(${ uri } , () => require(${ requireURI } ));` ) ;
11
+ dependencies . push ( `global.registerModule(" ${ uri } " , () => require(" ${ requireURI } " ));` ) ;
11
12
12
- // call registerModule with requireURI to handle cases like @import "~@nativescript/theme/css/blue.css";
13
+ // Call registerModule with requireURI to handle cases like @import "~@nativescript/theme/css/blue.css";
13
14
if ( uri !== requireURI ) {
14
- dependencies . push ( `global.registerModule(${ requireURI } , () => require(${ requireURI } ));` ) ;
15
+ dependencies . push ( `global.registerModule(" ${ requireURI } " , () => require(" ${ requireURI } " ));` ) ;
15
16
}
16
17
} ) ;
17
-
18
18
const str = JSON . stringify ( ast , ( k , v ) => k === "position" ? undefined : v ) ;
19
19
this . callback ( null , `${ dependencies . join ( "\n" ) } module.exports = ${ str } ;` , map ) ;
20
20
}
@@ -25,12 +25,21 @@ function getImportsFrom(ast) {
25
25
}
26
26
return ast . stylesheet . rules
27
27
. filter ( rule => rule . type === "import" )
28
- . map ( importRule => importRule . import . replace ( / [ \' \" ] / gm , "" ) ) ;
28
+ . map ( urlFromImportRule ) ;
29
29
}
30
30
31
+ /**
32
+ * Extracts the url from import rule (ex. `url("./platform.css")`)
33
+ */
34
+ function urlFromImportRule ( importRule ) {
35
+ const urlValue = importRule . import ;
36
+ const urlMatch = urlValue && urlValue . match ( urlPattern ) ;
37
+ return urlMatch && urlMatch [ 2 ] ;
38
+ } ;
39
+
31
40
function mapURI ( uri ) {
32
41
return {
33
- uri : JSON . stringify ( uri ) ,
34
- requireURI : JSON . stringify ( uri [ 0 ] === "~" && uri [ 1 ] !== "/" ? uri . substr ( 1 ) : uri )
42
+ uri : uri ,
43
+ requireURI : uri [ 0 ] === "~" && uri [ 1 ] !== "/" ? uri . substr ( 1 ) : uri
35
44
} ;
36
45
}
0 commit comments