From ba4743cc834784a1af70f98564960158dfbf9e82 Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Sun, 8 Dec 2013 14:08:46 -0600 Subject: [PATCH] fix auto and manual require.extensions registration; ref #3141 You can now `require('coffee-script/register')` to manually register, and the compiler auto-registers when directly running a coffee file. --- Cakefile | 2 +- lib/coffee-script/command.js | 1 + lib/coffee-script/{extensions.js => register.js} | 0 lib/coffee-script/repl.js | 2 +- register.js | 1 + src/command.coffee | 10 +++++++--- src/{extensions.coffee => register.coffee} | 0 src/repl.coffee | 2 +- 8 files changed, 12 insertions(+), 6 deletions(-) rename lib/coffee-script/{extensions.js => register.js} (100%) create mode 100644 register.js rename src/{extensions.coffee => register.coffee} (100%) diff --git a/Cakefile b/Cakefile index b62a1be1..8d05de6d 100644 --- a/Cakefile +++ b/Cakefile @@ -161,7 +161,7 @@ task 'bench', 'quick benchmark of compilation time', -> # Run the CoffeeScript test suite. runTests = (CoffeeScript) -> - require './lib/coffee-script/extensions' + require './lib/coffee-script/register' startTime = Date.now() currentFile = null passedTests = 0 diff --git a/lib/coffee-script/command.js b/lib/coffee-script/command.js index 8a3f03b7..83d8d6cc 100644 --- a/lib/coffee-script/command.js +++ b/lib/coffee-script/command.js @@ -178,6 +178,7 @@ } else if (o.nodes) { return printLine(CoffeeScript.nodes(t.input, t.options).toString().trim()); } else if (o.run) { + require('./register'); return CoffeeScript.run(t.input, t.options); } else if (o.join && t.file !== o.join) { if (helpers.isLiterate(file)) { diff --git a/lib/coffee-script/extensions.js b/lib/coffee-script/register.js similarity index 100% rename from lib/coffee-script/extensions.js rename to lib/coffee-script/register.js diff --git a/lib/coffee-script/repl.js b/lib/coffee-script/repl.js index 8ebc16fc..fa099ff4 100644 --- a/lib/coffee-script/repl.js +++ b/lib/coffee-script/repl.js @@ -145,7 +145,7 @@ console.warn("Node 0.8.0+ required for CoffeeScript REPL"); process.exit(1); } - require('./extensions'); + require('./register'); process.argv = ['coffee'].concat(process.argv.slice(2)); opts = merge(replDefaults, opts); repl = nodeREPL.start(opts); diff --git a/register.js b/register.js new file mode 100644 index 00000000..97b33d72 --- /dev/null +++ b/register.js @@ -0,0 +1 @@ +require('./lib/coffee-script/register'); diff --git a/src/command.coffee b/src/command.coffee index cdefb5d1..3629ab35 100644 --- a/src/command.coffee +++ b/src/command.coffee @@ -133,9 +133,13 @@ compileScript = (file, input, base = null) -> try t = task = {file, input, options} CoffeeScript.emit 'compile', task - if o.tokens then printTokens CoffeeScript.tokens t.input, t.options - else if o.nodes then printLine CoffeeScript.nodes(t.input, t.options).toString().trim() - else if o.run then CoffeeScript.run t.input, t.options + if o.tokens + printTokens CoffeeScript.tokens t.input, t.options + else if o.nodes + printLine CoffeeScript.nodes(t.input, t.options).toString().trim() + else if o.run + require './register' + CoffeeScript.run t.input, t.options else if o.join and t.file isnt o.join t.input = helpers.invertLiterate t.input if helpers.isLiterate file sourceCode[sources.indexOf(t.file)] = t.input diff --git a/src/extensions.coffee b/src/register.coffee similarity index 100% rename from src/extensions.coffee rename to src/register.coffee diff --git a/src/repl.coffee b/src/repl.coffee index b09d3322..133d56d1 100644 --- a/src/repl.coffee +++ b/src/repl.coffee @@ -131,7 +131,7 @@ module.exports = console.warn "Node 0.8.0+ required for CoffeeScript REPL" process.exit 1 - require './extensions' + require './register' process.argv = ['coffee'].concat process.argv[2..] opts = merge replDefaults, opts repl = nodeREPL.start opts