From 9d63a161c37415091bbb4f88630fb0157a23372b Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Fri, 20 Jul 2012 22:08:17 +0100 Subject: [PATCH 1/2] Added option to specify the extension of the generated file. --- tasks/coffee.js | 5 +++-- test/coffee_test.js | 26 ++++++++++++++++++-------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/tasks/coffee.js b/tasks/coffee.js index 7cecbae..e4f21d9 100644 --- a/tasks/coffee.js +++ b/tasks/coffee.js @@ -32,12 +32,13 @@ module.exports = function(grunt) { // HELPERS // ========================================================================== - grunt.registerHelper('coffee', function(src, destPath, options) { + grunt.registerHelper('coffee', function(src, destPath, options, extension) { var coffee = require('coffee-script'), js = ''; destPath = destPath ? destPath : path.dirname(src); - var dest = path.join(destPath, path.basename(src, '.coffee') + '.js'); + extension = extension ? extension : '.js'; + var dest = path.join(destPath, path.basename(src, '.coffee') + extension); options = options || {}; if( options.bare !== false ) { diff --git a/test/coffee_test.js b/test/coffee_test.js index 47e19e8..060c999 100644 --- a/test/coffee_test.js +++ b/test/coffee_test.js @@ -26,10 +26,8 @@ fs.existsSync = fs.existsSync ? fs.existsSync : path.existsSync; var src = 'test/fixtures/hello_world.coffee'; var destFolder = 'tmp/js'; -var relativeDest = function(src) { - var out = path.resolve(path.dirname(src),path.basename(src, '.coffee') + '.js'); - return out; -}; +var dest1 = 'test/fixtures/hello_world.js'; +var dest2 = 'test/fixtures/hello_world.coffee.js'; exports['coffee'] = { setUp: function(done) { @@ -43,8 +41,12 @@ exports['coffee'] = { } fs.rmdirSync(destFolder); } - if (fs.existsSync(relativeDest(src))) { - fs.unlinkSync(relativeDest(src)); + + if (fs.existsSync(dest1)) { + fs.unlinkSync(dest1); + } + if (fs.existsSync(dest2)) { + fs.unlinkSync(dest2); } done(); }, @@ -66,10 +68,18 @@ exports['coffee'] = { }, 'helper-nodest': function(test) { - grunt.helper('coffee', [src], null); - test.equal(grunt.file.read(relativeDest(src)), + test.expect(1); + grunt.helper('coffee', [src]); + test.equal(grunt.file.read(dest1), '\nconsole.log("Hello CoffeeScript!");\n', 'it should compile the coffee'); test.done(); + }, + + 'helper-extension': function(test) { + test.expect(1); + grunt.helper('coffee', [src], null, {}, '.coffee.js'); + test.ok(fs.existsSync(dest2)); + test.done(); } }; From 842c38e51662642d39b37d2f5d8c494c5d3e1182 Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Fri, 20 Jul 2012 22:08:17 +0100 Subject: [PATCH 2/2] Added option to specify the extension of the generated file. --- tasks/coffee.js | 10 ++++++---- test/coffee_test.js | 26 ++++++++++++++++++-------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/tasks/coffee.js b/tasks/coffee.js index 7cecbae..bde6873 100644 --- a/tasks/coffee.js +++ b/tasks/coffee.js @@ -18,9 +18,10 @@ module.exports = function(grunt) { grunt.registerMultiTask('coffee', 'Compile CoffeeScript files', function() { var dest = this.file.dest, - options = this.data.options; + options = this.data.options, + extension = this.data.extension; grunt.file.expandFiles(this.file.src).forEach(function(filepath) { - grunt.helper('coffee', filepath, dest, options); + grunt.helper('coffee', filepath, dest, options, extension); }); if (grunt.task.current.errorCount) { @@ -32,12 +33,13 @@ module.exports = function(grunt) { // HELPERS // ========================================================================== - grunt.registerHelper('coffee', function(src, destPath, options) { + grunt.registerHelper('coffee', function(src, destPath, options, extension) { var coffee = require('coffee-script'), js = ''; destPath = destPath ? destPath : path.dirname(src); - var dest = path.join(destPath, path.basename(src, '.coffee') + '.js'); + extension = extension ? extension : '.js'; + var dest = path.join(destPath, path.basename(src, '.coffee') + extension); options = options || {}; if( options.bare !== false ) { diff --git a/test/coffee_test.js b/test/coffee_test.js index 47e19e8..060c999 100644 --- a/test/coffee_test.js +++ b/test/coffee_test.js @@ -26,10 +26,8 @@ fs.existsSync = fs.existsSync ? fs.existsSync : path.existsSync; var src = 'test/fixtures/hello_world.coffee'; var destFolder = 'tmp/js'; -var relativeDest = function(src) { - var out = path.resolve(path.dirname(src),path.basename(src, '.coffee') + '.js'); - return out; -}; +var dest1 = 'test/fixtures/hello_world.js'; +var dest2 = 'test/fixtures/hello_world.coffee.js'; exports['coffee'] = { setUp: function(done) { @@ -43,8 +41,12 @@ exports['coffee'] = { } fs.rmdirSync(destFolder); } - if (fs.existsSync(relativeDest(src))) { - fs.unlinkSync(relativeDest(src)); + + if (fs.existsSync(dest1)) { + fs.unlinkSync(dest1); + } + if (fs.existsSync(dest2)) { + fs.unlinkSync(dest2); } done(); }, @@ -66,10 +68,18 @@ exports['coffee'] = { }, 'helper-nodest': function(test) { - grunt.helper('coffee', [src], null); - test.equal(grunt.file.read(relativeDest(src)), + test.expect(1); + grunt.helper('coffee', [src]); + test.equal(grunt.file.read(dest1), '\nconsole.log("Hello CoffeeScript!");\n', 'it should compile the coffee'); test.done(); + }, + + 'helper-extension': function(test) { + test.expect(1); + grunt.helper('coffee', [src], null, {}, '.coffee.js'); + test.ok(fs.existsSync(dest2)); + test.done(); } };