diff --git a/Gruntfile.js b/Gruntfile.js index 5dbdaa6..746e4d1 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -298,6 +298,15 @@ module.exports = function(grunt) { options: { usemin: 'usemin/all.js' } + }, + + // bunch of files at different level in a directory (unmerged in dest) + unmerged_files: { + src: 'test/fixtures/unmerged/**/*.html', + dest: 'tmp/unmerged/', + options: { + merge: false + } } } }); diff --git a/tasks/angular-templates.js b/tasks/angular-templates.js index 783bd1b..c86eba6 100644 --- a/tasks/angular-templates.js +++ b/tasks/angular-templates.js @@ -31,7 +31,8 @@ module.exports = function(grunt) { url: function(path) { return path; }, usemin: null, append: false, - quotes: 'double' + quotes: 'double', + merge: true }); grunt.verbose.writeflags(options, 'Options'); @@ -50,7 +51,14 @@ module.exports = function(grunt) { var compiled = []; for (var module in modules) { - compiled.push(compiler.compile(module, modules[module])); + if (options.merge) { + compiled.push(compiler.compile(module, modules[module])); + } else { + //Compiling each file to the same module + for (var j = 0; j < file.src.length; j++) { + compiled.push(compiler.compile(module, [file.src[j]])); + } + } } if (options.append){ @@ -58,8 +66,19 @@ module.exports = function(grunt) { grunt.log.writeln('File ' + file.dest.cyan + ' updated.'); } else{ - grunt.file.write(file.dest, compiled.join('\n')); - grunt.log.writeln('File ' + file.dest.cyan + ' created.'); + if (options.merge) { + grunt.file.write(file.dest, compiled.join('\n')); + grunt.log.writeln('File ' + file.dest.cyan + ' created.'); + } else { + //Writing compiled file to the same relative location as source, without merging them together + for (var i = 0; i < compiled.length; i++) { + var dest = file.dest + file.src[i]; + //Change extension to js from html/htm + dest = dest.replace(/(html|htm)$/i, "js"); + grunt.file.write(dest, compiled[i]); + grunt.log.writeln('File ' + dest.cyan + ' created.'); + } + } } diff --git a/test/angular-templates_test.js b/test/angular-templates_test.js index 702c378..055a88b 100644 --- a/test/angular-templates_test.js +++ b/test/angular-templates_test.js @@ -251,6 +251,17 @@ exports.ngtemplates = { test.equal(expected, actual); test.done(); + }, + + unmerged_files: function(test) { + test.expect(5); + + test.equal(grunt.file.read('tmp/unmerged/test/fixtures/unmerged/undefined.js'), grunt.file.read('test/expected/unmerged_files/undefined.js')); + test.equal(grunt.file.read('tmp/unmerged/test/fixtures/unmerged/usemin.js'), grunt.file.read('test/expected/unmerged_files/usemin.js')); + test.equal(grunt.file.read('tmp/unmerged/test/fixtures/unmerged/level2/empty.js'), grunt.file.read('test/expected/unmerged_files/empty.js')); + test.equal(grunt.file.read('tmp/unmerged/test/fixtures/unmerged/level2/html5.js'), grunt.file.read('test/expected/unmerged_files/html5.js')); + test.equal(grunt.file.read('tmp/unmerged/test/fixtures/unmerged/level2/level3/one.js'), grunt.file.read('test/expected/unmerged_files/one.js')); + test.done(); } }; diff --git a/test/expected/unmerged_files/empty.js b/test/expected/unmerged_files/empty.js new file mode 100644 index 0000000..4571c9c --- /dev/null +++ b/test/expected/unmerged_files/empty.js @@ -0,0 +1,8 @@ +angular.module('unmerged_files').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('test/fixtures/unmerged/level2/empty.html', + "" + ); + +}]); diff --git a/test/expected/unmerged_files/html5.js b/test/expected/unmerged_files/html5.js new file mode 100644 index 0000000..84c3aaa --- /dev/null +++ b/test/expected/unmerged_files/html5.js @@ -0,0 +1,20 @@ +angular.module('unmerged_files').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('test/fixtures/unmerged/level2/html5.html', + "
\n" + + " \n" + + " Self-closing, sucka!\n" + + "
\n" + + " Howdy\n" + + "
\n" + + "\n" + + "
\n" + + "\n" + + "\n" + + " \n" + + "
\n" + + " Howdy\n" + ); + +}]); diff --git a/test/expected/unmerged_files/one.js b/test/expected/unmerged_files/one.js new file mode 100644 index 0000000..c0adf1e --- /dev/null +++ b/test/expected/unmerged_files/one.js @@ -0,0 +1,16 @@ +angular.module('unmerged_files').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('test/fixtures/unmerged/level2/level3/one.html', + "

One

\n" + + "\n" + + "

I am one.

\n" + + "\n" + + "\n" + ); + +}]); diff --git a/test/expected/unmerged_files/undefined.js b/test/expected/unmerged_files/undefined.js new file mode 100644 index 0000000..f35a601 --- /dev/null +++ b/test/expected/unmerged_files/undefined.js @@ -0,0 +1,16 @@ +angular.module('unmerged_files').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('test/fixtures/unmerged/undefined.html', + "

Undefined

\n" + + "\n" + + "

I am undefined.

\n" + + "\n" + + "\n" + ); + +}]); diff --git a/test/expected/unmerged_files/usemin.js b/test/expected/unmerged_files/usemin.js new file mode 100644 index 0000000..de10318 --- /dev/null +++ b/test/expected/unmerged_files/usemin.js @@ -0,0 +1,37 @@ +angular.module('unmerged_files').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('test/fixtures/unmerged/usemin.html', + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n" + + " \n" + + " \n" + + " \n" + + "\n" + + " \n" + + " \n" + + " \n" + + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n" + + " \n" + + " \n" + + " \n" + + "\n" + + "\n" + ); + +}]); diff --git a/test/fixtures/unmerged/level2/empty.html b/test/fixtures/unmerged/level2/empty.html new file mode 100644 index 0000000..e69de29 diff --git a/test/fixtures/unmerged/level2/html5.html b/test/fixtures/unmerged/level2/html5.html new file mode 100644 index 0000000..577dc1d --- /dev/null +++ b/test/fixtures/unmerged/level2/html5.html @@ -0,0 +1,13 @@ +
+ + Self-closing, sucka! +
+ Howdy +
+ +
+ + + +
+ Howdy diff --git a/test/fixtures/unmerged/level2/level3/one.html b/test/fixtures/unmerged/level2/level3/one.html new file mode 100644 index 0000000..963f55a --- /dev/null +++ b/test/fixtures/unmerged/level2/level3/one.html @@ -0,0 +1,9 @@ +

One

+ +

I am one.

+ + diff --git a/test/fixtures/unmerged/undefined.html b/test/fixtures/unmerged/undefined.html new file mode 100644 index 0000000..0cb4499 --- /dev/null +++ b/test/fixtures/unmerged/undefined.html @@ -0,0 +1,9 @@ +

Undefined

+ +

I am undefined.

+ + diff --git a/test/fixtures/unmerged/usemin.html b/test/fixtures/unmerged/usemin.html new file mode 100644 index 0000000..fc53294 --- /dev/null +++ b/test/fixtures/unmerged/usemin.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +