123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 |
- // Generated by CoffeeScript 1.10.0
- (function() {
- var Lexer, SourceMap, base, compile, ext, formatSourcePosition, fs, getSourceMap, helpers, i, len, lexer, parser, path, ref, sourceMaps, vm, withPrettyErrors,
- 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; };
- fs = require('fs');
- vm = require('vm');
- path = require('path');
- Lexer = require('./lexer').Lexer;
- parser = require('./parser').parser;
- helpers = require('./helpers');
- SourceMap = require('./sourcemap');
- exports.VERSION = '1.10.0';
- exports.FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md'];
- exports.helpers = helpers;
- withPrettyErrors = function(fn) {
- return function(code, options) {
- var err, error;
- if (options == null) {
- options = {};
- }
- try {
- return fn.call(this, code, options);
- } catch (error) {
- err = error;
- if (typeof code !== 'string') {
- throw err;
- }
- throw helpers.updateSyntaxError(err, code, options.filename);
- }
- };
- };
- exports.compile = compile = withPrettyErrors(function(code, options) {
- var answer, currentColumn, currentLine, extend, fragment, fragments, header, i, js, len, map, merge, newLines, token, tokens;
- merge = helpers.merge, extend = helpers.extend;
- options = extend({}, options);
- if (options.sourceMap) {
- map = new SourceMap;
- }
- tokens = lexer.tokenize(code, options);
- options.referencedVars = (function() {
- var i, len, results;
- results = [];
- for (i = 0, len = tokens.length; i < len; i++) {
- token = tokens[i];
- if (token.variable) {
- results.push(token[1]);
- }
- }
- return results;
- })();
- fragments = parser.parse(tokens).compileToFragments(options);
- currentLine = 0;
- if (options.header) {
- currentLine += 1;
- }
- if (options.shiftLine) {
- currentLine += 1;
- }
- currentColumn = 0;
- js = "";
- for (i = 0, len = fragments.length; i < len; i++) {
- fragment = fragments[i];
- if (options.sourceMap) {
- if (fragment.locationData && !/^[;\s]*$/.test(fragment.code)) {
- map.add([fragment.locationData.first_line, fragment.locationData.first_column], [currentLine, currentColumn], {
- noReplace: true
- });
- }
- newLines = helpers.count(fragment.code, "\n");
- currentLine += newLines;
- if (newLines) {
- currentColumn = fragment.code.length - (fragment.code.lastIndexOf("\n") + 1);
- } else {
- currentColumn += fragment.code.length;
- }
- }
- js += fragment.code;
- }
- if (options.header) {
- header = "Generated by CoffeeScript " + this.VERSION;
- js = "// " + header + "\n" + js;
- }
- if (options.sourceMap) {
- answer = {
- js: js
- };
- answer.sourceMap = map;
- answer.v3SourceMap = map.generate(options, code);
- return answer;
- } else {
- return js;
- }
- });
- exports.tokens = withPrettyErrors(function(code, options) {
- return lexer.tokenize(code, options);
- });
- exports.nodes = withPrettyErrors(function(source, options) {
- if (typeof source === 'string') {
- return parser.parse(lexer.tokenize(source, options));
- } else {
- return parser.parse(source);
- }
- });
- exports.run = function(code, options) {
- var answer, dir, mainModule, ref;
- if (options == null) {
- options = {};
- }
- mainModule = require.main;
- mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : '.';
- mainModule.moduleCache && (mainModule.moduleCache = {});
- dir = options.filename ? path.dirname(fs.realpathSync(options.filename)) : fs.realpathSync('.');
- mainModule.paths = require('module')._nodeModulePaths(dir);
- if (!helpers.isCoffee(mainModule.filename) || require.extensions) {
- answer = compile(code, options);
- code = (ref = answer.js) != null ? ref : answer;
- }
- return mainModule._compile(code, mainModule.filename);
- };
- exports["eval"] = function(code, options) {
- var Module, _module, _require, createContext, i, isContext, js, k, len, o, r, ref, ref1, ref2, ref3, sandbox, v;
- if (options == null) {
- options = {};
- }
- if (!(code = code.trim())) {
- return;
- }
- createContext = (ref = vm.Script.createContext) != null ? ref : vm.createContext;
- isContext = (ref1 = vm.isContext) != null ? ref1 : function(ctx) {
- return options.sandbox instanceof createContext().constructor;
- };
- if (createContext) {
- if (options.sandbox != null) {
- if (isContext(options.sandbox)) {
- sandbox = options.sandbox;
- } else {
- sandbox = createContext();
- ref2 = options.sandbox;
- for (k in ref2) {
- if (!hasProp.call(ref2, k)) continue;
- v = ref2[k];
- sandbox[k] = v;
- }
- }
- sandbox.global = sandbox.root = sandbox.GLOBAL = sandbox;
- } else {
- sandbox = global;
- }
- sandbox.__filename = options.filename || 'eval';
- sandbox.__dirname = path.dirname(sandbox.__filename);
- if (!(sandbox !== global || sandbox.module || sandbox.require)) {
- Module = require('module');
- sandbox.module = _module = new Module(options.modulename || 'eval');
- sandbox.require = _require = function(path) {
- return Module._load(path, _module, true);
- };
- _module.filename = sandbox.__filename;
- ref3 = Object.getOwnPropertyNames(require);
- for (i = 0, len = ref3.length; i < len; i++) {
- r = ref3[i];
- if (r !== 'paths' && r !== 'arguments' && r !== 'caller') {
- _require[r] = require[r];
- }
- }
- _require.paths = _module.paths = Module._nodeModulePaths(process.cwd());
- _require.resolve = function(request) {
- return Module._resolveFilename(request, _module);
- };
- }
- }
- o = {};
- for (k in options) {
- if (!hasProp.call(options, k)) continue;
- v = options[k];
- o[k] = v;
- }
- o.bare = true;
- js = compile(code, o);
- if (sandbox === global) {
- return vm.runInThisContext(js);
- } else {
- return vm.runInContext(js, sandbox);
- }
- };
- exports.register = function() {
- return require('./register');
- };
- if (require.extensions) {
- ref = this.FILE_EXTENSIONS;
- for (i = 0, len = ref.length; i < len; i++) {
- ext = ref[i];
- if ((base = require.extensions)[ext] == null) {
- base[ext] = function() {
- throw new Error("Use CoffeeScript.register() or require the coffee-script/register module to require " + ext + " files.");
- };
- }
- }
- }
- exports._compileFile = function(filename, sourceMap) {
- var answer, err, error, raw, stripped;
- if (sourceMap == null) {
- sourceMap = false;
- }
- raw = fs.readFileSync(filename, 'utf8');
- stripped = raw.charCodeAt(0) === 0xFEFF ? raw.substring(1) : raw;
- try {
- answer = compile(stripped, {
- filename: filename,
- sourceMap: sourceMap,
- literate: helpers.isLiterate(filename)
- });
- } catch (error) {
- err = error;
- throw helpers.updateSyntaxError(err, stripped, filename);
- }
- return answer;
- };
- lexer = new Lexer;
- parser.lexer = {
- lex: function() {
- var tag, token;
- token = parser.tokens[this.pos++];
- if (token) {
- tag = token[0], this.yytext = token[1], this.yylloc = token[2];
- parser.errorToken = token.origin || token;
- this.yylineno = this.yylloc.first_line;
- } else {
- tag = '';
- }
- return tag;
- },
- setInput: function(tokens) {
- parser.tokens = tokens;
- return this.pos = 0;
- },
- upcomingInput: function() {
- return "";
- }
- };
- parser.yy = require('./nodes');
- parser.yy.parseError = function(message, arg) {
- var errorLoc, errorTag, errorText, errorToken, token, tokens;
- token = arg.token;
- errorToken = parser.errorToken, tokens = parser.tokens;
- errorTag = errorToken[0], errorText = errorToken[1], errorLoc = errorToken[2];
- errorText = (function() {
- switch (false) {
- case errorToken !== tokens[tokens.length - 1]:
- return 'end of input';
- case errorTag !== 'INDENT' && errorTag !== 'OUTDENT':
- return 'indentation';
- case errorTag !== 'IDENTIFIER' && errorTag !== 'NUMBER' && errorTag !== 'STRING' && errorTag !== 'STRING_START' && errorTag !== 'REGEX' && errorTag !== 'REGEX_START':
- return errorTag.replace(/_START$/, '').toLowerCase();
- default:
- return helpers.nameWhitespaceCharacter(errorText);
- }
- })();
- return helpers.throwSyntaxError("unexpected " + errorText, errorLoc);
- };
- formatSourcePosition = function(frame, getSourceMapping) {
- var as, column, fileLocation, fileName, functionName, isConstructor, isMethodCall, line, methodName, source, tp, typeName;
- fileName = void 0;
- fileLocation = '';
- if (frame.isNative()) {
- fileLocation = "native";
- } else {
- if (frame.isEval()) {
- fileName = frame.getScriptNameOrSourceURL();
- if (!fileName) {
- fileLocation = (frame.getEvalOrigin()) + ", ";
- }
- } else {
- fileName = frame.getFileName();
- }
- fileName || (fileName = "<anonymous>");
- line = frame.getLineNumber();
- column = frame.getColumnNumber();
- source = getSourceMapping(fileName, line, column);
- fileLocation = source ? fileName + ":" + source[0] + ":" + source[1] : fileName + ":" + line + ":" + column;
- }
- functionName = frame.getFunctionName();
- isConstructor = frame.isConstructor();
- isMethodCall = !(frame.isToplevel() || isConstructor);
- if (isMethodCall) {
- methodName = frame.getMethodName();
- typeName = frame.getTypeName();
- if (functionName) {
- tp = as = '';
- if (typeName && functionName.indexOf(typeName)) {
- tp = typeName + ".";
- }
- if (methodName && functionName.indexOf("." + methodName) !== functionName.length - methodName.length - 1) {
- as = " [as " + methodName + "]";
- }
- return "" + tp + functionName + as + " (" + fileLocation + ")";
- } else {
- return typeName + "." + (methodName || '<anonymous>') + " (" + fileLocation + ")";
- }
- } else if (isConstructor) {
- return "new " + (functionName || '<anonymous>') + " (" + fileLocation + ")";
- } else if (functionName) {
- return functionName + " (" + fileLocation + ")";
- } else {
- return fileLocation;
- }
- };
- sourceMaps = {};
- getSourceMap = function(filename) {
- var answer, ref1;
- if (sourceMaps[filename]) {
- return sourceMaps[filename];
- }
- if (ref1 = path != null ? path.extname(filename) : void 0, indexOf.call(exports.FILE_EXTENSIONS, ref1) < 0) {
- return;
- }
- answer = exports._compileFile(filename, true);
- return sourceMaps[filename] = answer.sourceMap;
- };
- Error.prepareStackTrace = function(err, stack) {
- var frame, frames, getSourceMapping;
- getSourceMapping = function(filename, line, column) {
- var answer, sourceMap;
- sourceMap = getSourceMap(filename);
- if (sourceMap) {
- answer = sourceMap.sourceLocation([line - 1, column - 1]);
- }
- if (answer) {
- return [answer[0] + 1, answer[1] + 1];
- } else {
- return null;
- }
- };
- frames = (function() {
- var j, len1, results;
- results = [];
- for (j = 0, len1 = stack.length; j < len1; j++) {
- frame = stack[j];
- if (frame.getFunction() === exports.run) {
- break;
- }
- results.push(" at " + (formatSourcePosition(frame, getSourceMapping)));
- }
- return results;
- })();
- return (err.toString()) + "\n" + (frames.join('\n')) + "\n";
- };
- }).call(this);
|