@@ -154,34 +154,28 @@ if require.extensions
154154 for ext in [' .coffee' , ' .litcoffee' , ' .coffee.md' ]
155155 require .extensions [ext] = loadFile
156156
157- # Patch Node's module loader to be able to handle .coffee.md in require.extensions
158- do (Module = require ' module' ) ->
159- 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;}"
160-
161- # Only keep going if we're sure module.prototype.load is what we expect
162- return unless Module :: load .toString ().replace (/ \s + / g , ' ' ) is NATIVELOAD
163-
164- findExtension = (filename ) ->
165- extensions = path .basename (filename).split ' .'
166-
167- # Remove initial dot from dotfiles
168- extensions .shift () if extensions[0 ] is ' '
169-
170- # Start with the longest extension and work our way shortwards
171- while extensions .shift ()
172- curExtension = ' .' + extensions .join ' .'
173- return curExtension if Module ._extensions [curExtension]
174-
175- ' .js'
176-
177- Module :: load = (filename ) ->
178- @filename = filename
179- @paths = Module ._nodeModulePaths path .dirname filename
180-
181- extension = findExtension filename
182- Module ._extensions [extension](this , filename)
183- @loaded = true
184-
157+ # Patch Node's module loader to be able to handle mult-dot extensions.
158+ # This is a horrible thing that should not be required. Perhaps, one day,
159+ # when a truly benevolent dictator comes to rule over the Republik of Node,
160+ # it won't be.
161+ Module = require ' module'
162+
163+ findExtension = (filename ) ->
164+ extensions = path .basename (filename).split ' .'
165+ # Remove the initial dot from dotfiles.
166+ extensions .shift () if extensions[0 ] is ' '
167+ # Start with the longest possible extension and work our way shortwards.
168+ while extensions .shift ()
169+ curExtension = ' .' + extensions .join ' .'
170+ return curExtension if Module ._extensions [curExtension]
171+ ' .js'
172+
173+ Module :: load = (filename ) ->
174+ @filename = filename
175+ @paths = Module ._nodeModulePaths path .dirname filename
176+ extension = findExtension filename
177+ Module ._extensions [extension](this , filename)
178+ @loaded = true
185179
186180# If we're on Node, patch `child_process.fork` so that Coffee scripts are able
187181# to fork both CoffeeScript files, and JavaScript files, directly.
0 commit comments