Version 1
[yaffs-website] / node_modules / coffee-script / lib / coffee-script / coffee-script.js
diff --git a/node_modules/coffee-script/lib/coffee-script/coffee-script.js b/node_modules/coffee-script/lib/coffee-script/coffee-script.js
new file mode 100644 (file)
index 0000000..1a30d49
--- /dev/null
@@ -0,0 +1,376 @@
+// 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);