Skip to content

Commit 23a597e

Browse files
require explicit require.extensions registration
jashkenas/coffeescript#2323 Use CoffeeScript.register() or require('coffee-script-redux/register')
1 parent a0a7401 commit 23a597e

10 files changed

Lines changed: 54 additions & 38 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ROOT = $(shell pwd)
99

1010
COFFEE = bin/coffee --js --bare
1111
PEGJS = node_modules/.bin/pegjs --cache --export-var 'module.exports'
12-
MOCHA = node_modules/.bin/mocha --compilers coffee:. -u tdd
12+
MOCHA = node_modules/.bin/mocha --compilers coffee:./register -u tdd
1313
CJSIFY = node_modules/.bin/cjsify --export CoffeeScript
1414
MINIFIER = node_modules/.bin/esmangle
1515

lib/command.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/module.js

Lines changed: 8 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/register.js

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/run.js

Lines changed: 5 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

register.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require('./lib/register');

src/command.coffee

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ else
269269

270270
# --eval
271271
if options.eval
272+
CoffeeScript.register()
272273
runMain input, js, jsAST, inputSource
273274
return
274275

src/module.coffee

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ escodegenCompactDefaults =
3232
semicolons: no
3333

3434

35-
module.exports =
35+
CoffeeScript =
3636

37+
CoffeeScript: CoffeeScript
3738
Compiler: Compiler
3839
Optimiser: Optimiser
3940
Parser: Parser
@@ -82,8 +83,7 @@ module.exports =
8283
CoffeeScript.js jsAST, compact: options.compact or options.minify
8384

8485

85-
CoffeeScript = module.exports.CoffeeScript = module.exports
86+
module.exports = CoffeeScript
8687

87-
if (process.title == 'node')
88-
noBrowserifyRequire = require
89-
noBrowserifyRequire './run'
88+
if process.title is 'node'
89+
CoffeeScript.register = -> require './register'

src/register.coffee

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
fs = require 'fs'
2+
CoffeeScript = require './module'
3+
{runModule} = require './run'
4+
5+
module.exports = not require.extensions['.coffee']?
6+
7+
require.extensions['.coffee'] ?= (module, filename) ->
8+
input = fs.readFileSync filename, 'utf8'
9+
csAst = CoffeeScript.parse input, raw: yes
10+
jsAst = CoffeeScript.compile csAst
11+
js = CoffeeScript.js jsAst
12+
13+
runModule module, js, jsAst, filename

src/run.coffee

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# Node.js-specific support: module loading, sourceMapping errors
22

3-
fs = require 'fs'
43
path = require 'path'
54
Module = require 'module'
65
CoffeeScript = require './module'
@@ -97,32 +96,20 @@ formatSourcePosition = (frame, getSourceMapping) ->
9796
fileLocation
9897

9998
# Run JavaScript as a main program - resetting process.argv and module lookup paths
100-
exports.runMain = (csSource, jsSource, jsAst, filename) ->
99+
runMain = (csSource, jsSource, jsAst, filename) ->
101100
mainModule = new Module '.'
102101
mainModule.filename = process.argv[1] = filename
103-
104102
# Set it as the main module -- this is used for require.main
105103
process.mainModule = mainModule
106-
107104
# Add the module to the cache
108105
Module._cache[mainModule.filename] = mainModule
109-
110106
# Assign paths for node_modules loading
111107
mainModule.paths = Module._nodeModulePaths path.dirname filename
112-
113108
runModule mainModule, jsSource, jsAst, filename
114109

115110
runModule = (module, jsSource, jsAst, filename) ->
116111
do patchStackTrace
117-
118112
Module._sourceMaps[filename] = -> "#{CoffeeScript.sourceMap jsAst, filename}"
119-
120113
module._compile jsSource, filename
121114

122-
require.extensions['.coffee'] = (module, filename) ->
123-
input = fs.readFileSync filename, 'utf8'
124-
csAst = CoffeeScript.parse input, raw: yes
125-
jsAst = CoffeeScript.compile csAst
126-
js = CoffeeScript.js jsAst
127-
128-
runModule module, js, jsAst, filename
115+
module.exports = {runMain, runModule}

0 commit comments

Comments
 (0)