react / wstein / node_modules / jest-cli / node_modules / coffee-script / lib / coffee-script / coffee-script.js
80677 views// Generated by CoffeeScript 1.9.31(function() {2var Lexer, SourceMap, base, compile, ext, formatSourcePosition, fs, getSourceMap, helpers, i, len, lexer, parser, path, ref, sourceMaps, vm, withPrettyErrors,3hasProp = {}.hasOwnProperty,4indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };56fs = require('fs');78vm = require('vm');910path = require('path');1112Lexer = require('./lexer').Lexer;1314parser = require('./parser').parser;1516helpers = require('./helpers');1718SourceMap = require('./sourcemap');1920exports.VERSION = '1.9.3';2122exports.FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md'];2324exports.helpers = helpers;2526withPrettyErrors = function(fn) {27return function(code, options) {28var err;29if (options == null) {30options = {};31}32try {33return fn.call(this, code, options);34} catch (_error) {35err = _error;36if (typeof code !== 'string') {37throw err;38}39throw helpers.updateSyntaxError(err, code, options.filename);40}41};42};4344exports.compile = compile = withPrettyErrors(function(code, options) {45var answer, currentColumn, currentLine, extend, fragment, fragments, header, i, js, len, map, merge, newLines, token, tokens;46merge = helpers.merge, extend = helpers.extend;47options = extend({}, options);48if (options.sourceMap) {49map = new SourceMap;50}51tokens = lexer.tokenize(code, options);52options.referencedVars = (function() {53var i, len, results;54results = [];55for (i = 0, len = tokens.length; i < len; i++) {56token = tokens[i];57if (token.variable) {58results.push(token[1]);59}60}61return results;62})();63fragments = parser.parse(tokens).compileToFragments(options);64currentLine = 0;65if (options.header) {66currentLine += 1;67}68if (options.shiftLine) {69currentLine += 1;70}71currentColumn = 0;72js = "";73for (i = 0, len = fragments.length; i < len; i++) {74fragment = fragments[i];75if (options.sourceMap) {76if (fragment.locationData && !/^[;\s]*$/.test(fragment.code)) {77map.add([fragment.locationData.first_line, fragment.locationData.first_column], [currentLine, currentColumn], {78noReplace: true79});80}81newLines = helpers.count(fragment.code, "\n");82currentLine += newLines;83if (newLines) {84currentColumn = fragment.code.length - (fragment.code.lastIndexOf("\n") + 1);85} else {86currentColumn += fragment.code.length;87}88}89js += fragment.code;90}91if (options.header) {92header = "Generated by CoffeeScript " + this.VERSION;93js = "// " + header + "\n" + js;94}95if (options.sourceMap) {96answer = {97js: js98};99answer.sourceMap = map;100answer.v3SourceMap = map.generate(options, code);101return answer;102} else {103return js;104}105});106107exports.tokens = withPrettyErrors(function(code, options) {108return lexer.tokenize(code, options);109});110111exports.nodes = withPrettyErrors(function(source, options) {112if (typeof source === 'string') {113return parser.parse(lexer.tokenize(source, options));114} else {115return parser.parse(source);116}117});118119exports.run = function(code, options) {120var answer, dir, mainModule, ref;121if (options == null) {122options = {};123}124mainModule = require.main;125mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : '.';126mainModule.moduleCache && (mainModule.moduleCache = {});127dir = options.filename ? path.dirname(fs.realpathSync(options.filename)) : fs.realpathSync('.');128mainModule.paths = require('module')._nodeModulePaths(dir);129if (!helpers.isCoffee(mainModule.filename) || require.extensions) {130answer = compile(code, options);131code = (ref = answer.js) != null ? ref : answer;132}133return mainModule._compile(code, mainModule.filename);134};135136exports["eval"] = function(code, options) {137var Module, _module, _require, createContext, i, isContext, js, k, len, o, r, ref, ref1, ref2, ref3, sandbox, v;138if (options == null) {139options = {};140}141if (!(code = code.trim())) {142return;143}144createContext = (ref = vm.Script.createContext) != null ? ref : vm.createContext;145isContext = (ref1 = vm.isContext) != null ? ref1 : function(ctx) {146return options.sandbox instanceof createContext().constructor;147};148if (createContext) {149if (options.sandbox != null) {150if (isContext(options.sandbox)) {151sandbox = options.sandbox;152} else {153sandbox = createContext();154ref2 = options.sandbox;155for (k in ref2) {156if (!hasProp.call(ref2, k)) continue;157v = ref2[k];158sandbox[k] = v;159}160}161sandbox.global = sandbox.root = sandbox.GLOBAL = sandbox;162} else {163sandbox = global;164}165sandbox.__filename = options.filename || 'eval';166sandbox.__dirname = path.dirname(sandbox.__filename);167if (!(sandbox !== global || sandbox.module || sandbox.require)) {168Module = require('module');169sandbox.module = _module = new Module(options.modulename || 'eval');170sandbox.require = _require = function(path) {171return Module._load(path, _module, true);172};173_module.filename = sandbox.__filename;174ref3 = Object.getOwnPropertyNames(require);175for (i = 0, len = ref3.length; i < len; i++) {176r = ref3[i];177if (r !== 'paths') {178_require[r] = require[r];179}180}181_require.paths = _module.paths = Module._nodeModulePaths(process.cwd());182_require.resolve = function(request) {183return Module._resolveFilename(request, _module);184};185}186}187o = {};188for (k in options) {189if (!hasProp.call(options, k)) continue;190v = options[k];191o[k] = v;192}193o.bare = true;194js = compile(code, o);195if (sandbox === global) {196return vm.runInThisContext(js);197} else {198return vm.runInContext(js, sandbox);199}200};201202exports.register = function() {203return require('./register');204};205206if (require.extensions) {207ref = this.FILE_EXTENSIONS;208for (i = 0, len = ref.length; i < len; i++) {209ext = ref[i];210if ((base = require.extensions)[ext] == null) {211base[ext] = function() {212throw new Error("Use CoffeeScript.register() or require the coffee-script/register module to require " + ext + " files.");213};214}215}216}217218exports._compileFile = function(filename, sourceMap) {219var answer, err, raw, stripped;220if (sourceMap == null) {221sourceMap = false;222}223raw = fs.readFileSync(filename, 'utf8');224stripped = raw.charCodeAt(0) === 0xFEFF ? raw.substring(1) : raw;225try {226answer = compile(stripped, {227filename: filename,228sourceMap: sourceMap,229literate: helpers.isLiterate(filename)230});231} catch (_error) {232err = _error;233throw helpers.updateSyntaxError(err, stripped, filename);234}235return answer;236};237238lexer = new Lexer;239240parser.lexer = {241lex: function() {242var tag, token;243token = parser.tokens[this.pos++];244if (token) {245tag = token[0], this.yytext = token[1], this.yylloc = token[2];246parser.errorToken = token.origin || token;247this.yylineno = this.yylloc.first_line;248} else {249tag = '';250}251return tag;252},253setInput: function(tokens) {254parser.tokens = tokens;255return this.pos = 0;256},257upcomingInput: function() {258return "";259}260};261262parser.yy = require('./nodes');263264parser.yy.parseError = function(message, arg) {265var errorLoc, errorTag, errorText, errorToken, token, tokens;266token = arg.token;267errorToken = parser.errorToken, tokens = parser.tokens;268errorTag = errorToken[0], errorText = errorToken[1], errorLoc = errorToken[2];269errorText = (function() {270switch (false) {271case errorToken !== tokens[tokens.length - 1]:272return 'end of input';273case errorTag !== 'INDENT' && errorTag !== 'OUTDENT':274return 'indentation';275case errorTag !== 'IDENTIFIER' && errorTag !== 'NUMBER' && errorTag !== 'STRING' && errorTag !== 'STRING_START' && errorTag !== 'REGEX' && errorTag !== 'REGEX_START':276return errorTag.replace(/_START$/, '').toLowerCase();277default:278return helpers.nameWhitespaceCharacter(errorText);279}280})();281return helpers.throwSyntaxError("unexpected " + errorText, errorLoc);282};283284formatSourcePosition = function(frame, getSourceMapping) {285var as, column, fileLocation, fileName, functionName, isConstructor, isMethodCall, line, methodName, source, tp, typeName;286fileName = void 0;287fileLocation = '';288if (frame.isNative()) {289fileLocation = "native";290} else {291if (frame.isEval()) {292fileName = frame.getScriptNameOrSourceURL();293if (!fileName) {294fileLocation = (frame.getEvalOrigin()) + ", ";295}296} else {297fileName = frame.getFileName();298}299fileName || (fileName = "<anonymous>");300line = frame.getLineNumber();301column = frame.getColumnNumber();302source = getSourceMapping(fileName, line, column);303fileLocation = source ? fileName + ":" + source[0] + ":" + source[1] : fileName + ":" + line + ":" + column;304}305functionName = frame.getFunctionName();306isConstructor = frame.isConstructor();307isMethodCall = !(frame.isToplevel() || isConstructor);308if (isMethodCall) {309methodName = frame.getMethodName();310typeName = frame.getTypeName();311if (functionName) {312tp = as = '';313if (typeName && functionName.indexOf(typeName)) {314tp = typeName + ".";315}316if (methodName && functionName.indexOf("." + methodName) !== functionName.length - methodName.length - 1) {317as = " [as " + methodName + "]";318}319return "" + tp + functionName + as + " (" + fileLocation + ")";320} else {321return typeName + "." + (methodName || '<anonymous>') + " (" + fileLocation + ")";322}323} else if (isConstructor) {324return "new " + (functionName || '<anonymous>') + " (" + fileLocation + ")";325} else if (functionName) {326return functionName + " (" + fileLocation + ")";327} else {328return fileLocation;329}330};331332sourceMaps = {};333334getSourceMap = function(filename) {335var answer, ref1;336if (sourceMaps[filename]) {337return sourceMaps[filename];338}339if (ref1 = path != null ? path.extname(filename) : void 0, indexOf.call(exports.FILE_EXTENSIONS, ref1) < 0) {340return;341}342answer = exports._compileFile(filename, true);343return sourceMaps[filename] = answer.sourceMap;344};345346Error.prepareStackTrace = function(err, stack) {347var frame, frames, getSourceMapping;348getSourceMapping = function(filename, line, column) {349var answer, sourceMap;350sourceMap = getSourceMap(filename);351if (sourceMap) {352answer = sourceMap.sourceLocation([line - 1, column - 1]);353}354if (answer) {355return [answer[0] + 1, answer[1] + 1];356} else {357return null;358}359};360frames = (function() {361var j, len1, results;362results = [];363for (j = 0, len1 = stack.length; j < len1; j++) {364frame = stack[j];365if (frame.getFunction() === exports.run) {366break;367}368results.push(" at " + (formatSourcePosition(frame, getSourceMapping)));369}370return results;371})();372return (err.toString()) + "\n" + (frames.join('\n')) + "\n";373};374375}).call(this);376377378