From 11ff96638f63baf28fa5665b06ac58ca949f63f3 Mon Sep 17 00:00:00 2001 From: Sven Reglitzki Date: Thu, 3 Sep 2015 08:12:04 +0200 Subject: [PATCH] File matching for the built-in coffee sourceTransformer is more strict now Closes #51 --- lib/sandboxed_module.js | 2 +- test/fixture/litcoffeeClass.litcoffee | 11 +++++++++++ test/integration/test-litcoffee.js | 25 +++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 test/fixture/litcoffeeClass.litcoffee create mode 100644 test/integration/test-litcoffee.js diff --git a/lib/sandboxed_module.js b/lib/sandboxed_module.js index 9aff370..6bf483c 100644 --- a/lib/sandboxed_module.js +++ b/lib/sandboxed_module.js @@ -307,7 +307,7 @@ function getStartingSourceTransformers() { var builtInSourceTransformers = { coffee: function(source) { - if (this.filename.search('.coffee$') !== -1){ + if (this.filename.search(/\.coffee$/) !== -1){ return require('coffee-script').compile(source); } else { return source; diff --git a/test/fixture/litcoffeeClass.litcoffee b/test/fixture/litcoffeeClass.litcoffee new file mode 100644 index 0000000..cb186f3 --- /dev/null +++ b/test/fixture/litcoffeeClass.litcoffee @@ -0,0 +1,11 @@ +# Foobar + +some simple class + + class coffeeClass + simpleData: -> + 42 + +the module exports provide the simple class ... + + module.exports = coffeeClass \ No newline at end of file diff --git a/test/integration/test-litcoffee.js b/test/integration/test-litcoffee.js new file mode 100644 index 0000000..045a0c9 --- /dev/null +++ b/test/integration/test-litcoffee.js @@ -0,0 +1,25 @@ +var assert = require('assert'); +var SandboxedModule = require('../..'); + +var hasCoffee = false; +try { + require('coffee-script').register(); + hasCoffee = true; +} catch (e) {} + +if (hasCoffee) { + var CoffeeClass = SandboxedModule.load('../fixture/litcoffeeClass', { + sourceTransformers: { + litcoffee: litcoffeeCompiler + } + }).exports; + assert.strictEqual(new CoffeeClass().simpleData(), 42); +} + +function litcoffeeCompiler(source) { + if (this.filename.search(/\.litcoffee$/) !== -1){ + return require('coffee-script').compile(source, {literate: true}); + } else { + return source; + } +}