mirror of
https://github.com/jashkenas/coffeescript.git
synced 2026-05-03 03:00:14 -04:00
This commit is contained in:
@@ -185,6 +185,36 @@
|
||||
ext = _ref[_i];
|
||||
require.extensions[ext] = loadFile;
|
||||
}
|
||||
(function(module) {
|
||||
var NATIVELOAD, findExtension;
|
||||
NATIVELOAD = "function(filename){debug('load'+JSON.stringify(filename)+'formodule'+JSON.stringify(this.id));assert(!this.loaded);this.filename=filename;this.paths=Module._nodeModulePaths(path.dirname(filename));varextension=path.extname(filename)||'.js';if(!Module._extensions[extension])extension='.js';Module._extensions[extension](this,filename);this.loaded=true;}";
|
||||
if (module.prototype.load.toString().replace(/\s+/g, "") === NATIVELOAD) {
|
||||
findExtension = function(filename) {
|
||||
var extension, extensions, thisExtension;
|
||||
extension = null;
|
||||
extensions = path.basename(filename).split('.');
|
||||
if (extensions[0] === '') {
|
||||
extensions.shift();
|
||||
}
|
||||
while (extensions.shift()) {
|
||||
thisExtension = '.' + extensions.join('.');
|
||||
if (module._extensions[thisExtension]) {
|
||||
extension = thisExtension;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return extension || '.js';
|
||||
};
|
||||
return module.prototype.load = function(filename) {
|
||||
var extension;
|
||||
this.filename = filename;
|
||||
this.paths = module._nodeModulePaths(path.dirname(filename));
|
||||
extension = findExtension(filename);
|
||||
module._extensions[extension](this, filename);
|
||||
return this.loaded = true;
|
||||
};
|
||||
}
|
||||
})(require('module'));
|
||||
}
|
||||
|
||||
if (child_process) {
|
||||
|
||||
@@ -154,6 +154,37 @@ if require.extensions
|
||||
for ext in ['.coffee', '.litcoffee', '.coffee.md']
|
||||
require.extensions[ext] = loadFile
|
||||
|
||||
# Patch Node's module loader to be able to handle .coffee.md in require.extensions
|
||||
do (module = require 'module') ->
|
||||
NATIVELOAD = "function(filename){debug('load'+JSON.stringify(filename)+'formodule'+JSON.stringify(this.id));assert(!this.loaded);this.filename=filename;this.paths=Module._nodeModulePaths(path.dirname(filename));varextension=path.extname(filename)||'.js';if(!Module._extensions[extension])extension='.js';Module._extensions[extension](this,filename);this.loaded=true;}"
|
||||
|
||||
# Only keep going if we're sure module.prototype.load is what we expect
|
||||
if module.prototype.load.toString().replace(/\s+/g,"") == NATIVELOAD
|
||||
findExtension = (filename) ->
|
||||
extension = null
|
||||
extensions = path.basename(filename).split '.'
|
||||
|
||||
# Remove initial dot from dotfiles
|
||||
extensions.shift() if extensions[0] is ''
|
||||
|
||||
# Start with the longest extension and work our way shortwards
|
||||
while extensions.shift()
|
||||
thisExtension = '.' + extensions.join '.'
|
||||
if module._extensions[thisExtension]
|
||||
extension = thisExtension
|
||||
break
|
||||
|
||||
return extension || '.js'
|
||||
|
||||
module.prototype.load = (filename) ->
|
||||
@filename = filename
|
||||
@paths = module._nodeModulePaths(path.dirname(filename))
|
||||
|
||||
extension = findExtension(filename)
|
||||
module._extensions[extension](this, filename)
|
||||
@loaded = true
|
||||
|
||||
|
||||
# If we're on Node, patch `child_process.fork` so that Coffee scripts are able
|
||||
# to fork both CoffeeScript files, and JavaScript files, directly.
|
||||
if child_process
|
||||
|
||||
Reference in New Issue
Block a user