diff --git a/lib/coffee-script/coffee-script.js b/lib/coffee-script/coffee-script.js index 4c548b99..12c434ab 100644 --- a/lib/coffee-script/coffee-script.js +++ b/lib/coffee-script/coffee-script.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript 1.7.1 (function() { - var Lexer, SourceMap, compile, formatSourcePosition, fs, getSourceMap, helpers, lexer, parser, path, sourceMaps, vm, withPrettyErrors, + var Lexer, SourceMap, compile, ext, formatSourcePosition, fs, getSourceMap, helpers, lexer, parser, path, sourceMaps, vm, withPrettyErrors, _i, _len, _ref, __hasProp = {}.hasOwnProperty, __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; @@ -186,6 +186,18 @@ return require('./register'); }; + if (require.extensions) { + _ref = this.FILE_EXTENSIONS; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + ext = _ref[_i]; + if (require.extensions[ext] == null) { + require.extensions[ext] = function() { + throw new Error('Use CoffeeScript.register() or the coffee-script/register module to dynamically load CoffeeScript files'); + }; + } + } + } + exports._compileFile = function(filename, sourceMap) { var answer, err, raw, stripped; if (sourceMap == null) { @@ -233,9 +245,9 @@ parser.yy = require('./nodes'); parser.yy.parseError = function(message, _arg) { - var errorLoc, errorTag, errorText, errorToken, token, tokens, _ref; + var errorLoc, errorTag, errorText, errorToken, token, tokens, _ref1; token = _arg.token; - _ref = parser.lexer, errorToken = _ref.errorToken, tokens = _ref.tokens; + _ref1 = parser.lexer, errorToken = _ref1.errorToken, tokens = _ref1.tokens; errorTag = errorToken[0], errorText = errorToken[1], errorLoc = errorToken[2]; errorText = errorToken === tokens[tokens.length - 1] ? 'end of input' : errorTag === 'INDENT' || errorTag === 'OUTDENT' ? 'indentation' : helpers.nameWhitespaceCharacter(errorText); return helpers.throwSyntaxError("unexpected " + errorText, errorLoc); @@ -292,11 +304,11 @@ sourceMaps = {}; getSourceMap = function(filename) { - var answer, _ref; + var answer, _ref1; if (sourceMaps[filename]) { return sourceMaps[filename]; } - if (_ref = path != null ? path.extname(filename) : void 0, __indexOf.call(exports.FILE_EXTENSIONS, _ref) < 0) { + if (_ref1 = path != null ? path.extname(filename) : void 0, __indexOf.call(exports.FILE_EXTENSIONS, _ref1) < 0) { return; } answer = exports._compileFile(filename, true); @@ -318,10 +330,10 @@ } }; frames = (function() { - var _i, _len, _results; + var _j, _len1, _results; _results = []; - for (_i = 0, _len = stack.length; _i < _len; _i++) { - frame = stack[_i]; + for (_j = 0, _len1 = stack.length; _j < _len1; _j++) { + frame = stack[_j]; if (frame.getFunction() === exports.run) { break; } diff --git a/src/coffee-script.coffee b/src/coffee-script.coffee index 639d2b4a..68ce8569 100644 --- a/src/coffee-script.coffee +++ b/src/coffee-script.coffee @@ -158,6 +158,14 @@ exports.eval = (code, options = {}) -> exports.register = -> require './register' +# Throw Error to register extension explicitly. +if require.extensions + for ext in @FILE_EXTENSIONS + unless require.extensions[ext]? + require.extensions[ext] = -> + throw new Error('''Use CoffeeScript.register() or the coffee-script/register module \ + to dynamically load CoffeeScript files''') + exports._compileFile = (filename, sourceMap = no) -> raw = fs.readFileSync filename, 'utf8' stripped = if raw.charCodeAt(0) is 0xFEFF then raw.substring 1 else raw