From 3a0bbcae1db5e52d6bdf0fcf988e19c3d5212643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Wed, 21 Oct 2015 19:19:11 -0400 Subject: [PATCH] Improve dependency parsing (ignore comments, simplify function) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds tests for nested modules and defines with line comments inside. Signed-off-by: Jörn Zaefferer --- index.js | 14 +++++--------- test/fixtures/basic/foo.js | 6 +++++- test/fixtures/nested/theme/input.css | 1 + test/fixtures/nested/theme/version.css | 1 + test/fixtures/nested/version.js | 2 ++ test/fixtures/nested/widgets/input.js | 3 +++ test/index.js | 22 ++++++++++++++++++++++ 7 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 test/fixtures/nested/theme/input.css create mode 100644 test/fixtures/nested/theme/version.css create mode 100644 test/fixtures/nested/version.js create mode 100644 test/fixtures/nested/widgets/input.js diff --git a/index.js b/index.js index 66aab5c..2931289 100644 --- a/index.js +++ b/index.js @@ -5,7 +5,7 @@ function cssDependencies( data, which ) { regexp = new RegExp( "\\/\\/>>\\s*css\\." + which + ":(.*)", "g" ); data.replace( regexp, function( garbage, input ) { - input = input.split( "," ).map( trim ); + input = input.split( "," ).map( trim ); result.push.apply( result, input ); }); @@ -15,15 +15,11 @@ function cssDependencies( data, which ) { } function jsDependencies( data ) { - var match, - result = []; - - match = data.match( /define\(\[([^\]]*?)\]/ ); - if ( match !== null ) { - result = match[ 1 ].split( "," ).map( trim ); + var match = data.match( /define\(\[([^\]]*?)\]/ ); + if ( match === null ) { + return []; } - - return result; + return match[ 1 ].replace( /\/\/.+/g, "" ).split( "," ).map( trim ); } /** diff --git a/test/fixtures/basic/foo.js b/test/fixtures/basic/foo.js index 52736fc..7052c3c 100644 --- a/test/fixtures/basic/foo.js +++ b/test/fixtures/basic/foo.js @@ -1,2 +1,6 @@ //>> css.baz: ./foo.css -define([ "./bar" ]); +define([ + + // comment + "./bar" +]); diff --git a/test/fixtures/nested/theme/input.css b/test/fixtures/nested/theme/input.css new file mode 100644 index 0000000..c4236fe --- /dev/null +++ b/test/fixtures/nested/theme/input.css @@ -0,0 +1 @@ +input {} diff --git a/test/fixtures/nested/theme/version.css b/test/fixtures/nested/theme/version.css new file mode 100644 index 0000000..208d16d --- /dev/null +++ b/test/fixtures/nested/theme/version.css @@ -0,0 +1 @@ +body {} diff --git a/test/fixtures/nested/version.js b/test/fixtures/nested/version.js new file mode 100644 index 0000000..1ad525d --- /dev/null +++ b/test/fixtures/nested/version.js @@ -0,0 +1,2 @@ +//>> css.structure: ./theme/version.css +define("0.2.0"); diff --git a/test/fixtures/nested/widgets/input.js b/test/fixtures/nested/widgets/input.js new file mode 100644 index 0000000..adcbdaa --- /dev/null +++ b/test/fixtures/nested/widgets/input.js @@ -0,0 +1,3 @@ +//>> css.structure: ../theme/input.css +define(["../version"], function(version) { +}); diff --git a/test/index.js b/test/index.js index bf1e0d0..82bed37 100644 --- a/test/index.js +++ b/test/index.js @@ -49,6 +49,28 @@ describe( "jQuery CSS Builder", function() { }); + describe( "Basic - nested+appdir", function() { + var css, + files = { + "fixtures/version.js": fs.readFileSync( __dirname + "/fixtures/nested/version.js" ), + "fixtures/widgets/input.js": fs.readFileSync( __dirname + "/fixtures/nested/widgets/input.js" ), + "fixtures/theme/version.css": fs.readFileSync( __dirname + "/fixtures/nested/theme/version.css" ), + "fixtures/theme/input.css": fs.readFileSync( __dirname + "/fixtures/nested/theme/input.css" ) + }; + + before(function( done ) { + jQueryCSSBuilder( files, "structure", { appDir: "fixtures", include: [ "widgets/input" ] }, function( error, _css ) { + css = _css; + done( error ); + }); + }); + + it( "should build just fine", function() { + expect( css ).to.equal( "input {}\nbody {}\n" ); + }); + + }); + describe( "Two bundles", function() { var cssNorth, cssSouth; var files = {