123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- // Generated by CoffeeScript 1.12.6
- (function() {
- var buildLocationData, extend, flatten, ref, repeat, syntaxErrorToString;
- exports.starts = function(string, literal, start) {
- return literal === string.substr(start, literal.length);
- };
- exports.ends = function(string, literal, back) {
- var len;
- len = literal.length;
- return literal === string.substr(string.length - len - (back || 0), len);
- };
- exports.repeat = repeat = function(str, n) {
- var res;
- res = '';
- while (n > 0) {
- if (n & 1) {
- res += str;
- }
- n >>>= 1;
- str += str;
- }
- return res;
- };
- exports.compact = function(array) {
- var i, item, len1, results;
- results = [];
- for (i = 0, len1 = array.length; i < len1; i++) {
- item = array[i];
- if (item) {
- results.push(item);
- }
- }
- return results;
- };
- exports.count = function(string, substr) {
- var num, pos;
- num = pos = 0;
- if (!substr.length) {
- return 1 / 0;
- }
- while (pos = 1 + string.indexOf(substr, pos)) {
- num++;
- }
- return num;
- };
- exports.merge = function(options, overrides) {
- return extend(extend({}, options), overrides);
- };
- extend = exports.extend = function(object, properties) {
- var key, val;
- for (key in properties) {
- val = properties[key];
- object[key] = val;
- }
- return object;
- };
- exports.flatten = flatten = function(array) {
- var element, flattened, i, len1;
- flattened = [];
- for (i = 0, len1 = array.length; i < len1; i++) {
- element = array[i];
- if ('[object Array]' === Object.prototype.toString.call(element)) {
- flattened = flattened.concat(flatten(element));
- } else {
- flattened.push(element);
- }
- }
- return flattened;
- };
- exports.del = function(obj, key) {
- var val;
- val = obj[key];
- delete obj[key];
- return val;
- };
- exports.some = (ref = Array.prototype.some) != null ? ref : function(fn) {
- var e, i, len1, ref1;
- ref1 = this;
- for (i = 0, len1 = ref1.length; i < len1; i++) {
- e = ref1[i];
- if (fn(e)) {
- return true;
- }
- }
- return false;
- };
- exports.invertLiterate = function(code) {
- var line, lines, maybe_code;
- maybe_code = true;
- lines = (function() {
- var i, len1, ref1, results;
- ref1 = code.split('\n');
- results = [];
- for (i = 0, len1 = ref1.length; i < len1; i++) {
- line = ref1[i];
- if (maybe_code && /^([ ]{4}|[ ]{0,3}\t)/.test(line)) {
- results.push(line);
- } else if (maybe_code = /^\s*$/.test(line)) {
- results.push(line);
- } else {
- results.push('# ' + line);
- }
- }
- return results;
- })();
- return lines.join('\n');
- };
- buildLocationData = function(first, last) {
- if (!last) {
- return first;
- } else {
- return {
- first_line: first.first_line,
- first_column: first.first_column,
- last_line: last.last_line,
- last_column: last.last_column
- };
- }
- };
- exports.addLocationDataFn = function(first, last) {
- return function(obj) {
- if (((typeof obj) === 'object') && (!!obj['updateLocationDataIfMissing'])) {
- obj.updateLocationDataIfMissing(buildLocationData(first, last));
- }
- return obj;
- };
- };
- exports.locationDataToString = function(obj) {
- var locationData;
- if (("2" in obj) && ("first_line" in obj[2])) {
- locationData = obj[2];
- } else if ("first_line" in obj) {
- locationData = obj;
- }
- if (locationData) {
- return ((locationData.first_line + 1) + ":" + (locationData.first_column + 1) + "-") + ((locationData.last_line + 1) + ":" + (locationData.last_column + 1));
- } else {
- return "No location data";
- }
- };
- exports.baseFileName = function(file, stripExt, useWinPathSep) {
- var parts, pathSep;
- if (stripExt == null) {
- stripExt = false;
- }
- if (useWinPathSep == null) {
- useWinPathSep = false;
- }
- pathSep = useWinPathSep ? /\\|\// : /\//;
- parts = file.split(pathSep);
- file = parts[parts.length - 1];
- if (!(stripExt && file.indexOf('.') >= 0)) {
- return file;
- }
- parts = file.split('.');
- parts.pop();
- if (parts[parts.length - 1] === 'coffee' && parts.length > 1) {
- parts.pop();
- }
- return parts.join('.');
- };
- exports.isCoffee = function(file) {
- return /\.((lit)?coffee|coffee\.md)$/.test(file);
- };
- exports.isLiterate = function(file) {
- return /\.(litcoffee|coffee\.md)$/.test(file);
- };
- exports.throwSyntaxError = function(message, location) {
- var error;
- error = new SyntaxError(message);
- error.location = location;
- error.toString = syntaxErrorToString;
- error.stack = error.toString();
- throw error;
- };
- exports.updateSyntaxError = function(error, code, filename) {
- if (error.toString === syntaxErrorToString) {
- error.code || (error.code = code);
- error.filename || (error.filename = filename);
- error.stack = error.toString();
- }
- return error;
- };
- syntaxErrorToString = function() {
- var codeLine, colorize, colorsEnabled, end, filename, first_column, first_line, last_column, last_line, marker, ref1, ref2, ref3, ref4, start;
- if (!(this.code && this.location)) {
- return Error.prototype.toString.call(this);
- }
- ref1 = this.location, first_line = ref1.first_line, first_column = ref1.first_column, last_line = ref1.last_line, last_column = ref1.last_column;
- if (last_line == null) {
- last_line = first_line;
- }
- if (last_column == null) {
- last_column = first_column;
- }
- filename = this.filename || '[stdin]';
- codeLine = this.code.split('\n')[first_line];
- start = first_column;
- end = first_line === last_line ? last_column + 1 : codeLine.length;
- marker = codeLine.slice(0, start).replace(/[^\s]/g, ' ') + repeat('^', end - start);
- if (typeof process !== "undefined" && process !== null) {
- colorsEnabled = ((ref2 = process.stdout) != null ? ref2.isTTY : void 0) && !((ref3 = process.env) != null ? ref3.NODE_DISABLE_COLORS : void 0);
- }
- if ((ref4 = this.colorful) != null ? ref4 : colorsEnabled) {
- colorize = function(str) {
- return "\x1B[1;31m" + str + "\x1B[0m";
- };
- codeLine = codeLine.slice(0, start) + colorize(codeLine.slice(start, end)) + codeLine.slice(end);
- marker = colorize(marker);
- }
- return filename + ":" + (first_line + 1) + ":" + (first_column + 1) + ": error: " + this.message + "\n" + codeLine + "\n" + marker;
- };
- exports.nameWhitespaceCharacter = function(string) {
- switch (string) {
- case ' ':
- return 'space';
- case '\n':
- return 'newline';
- case '\r':
- return 'carriage return';
- case '\t':
- return 'tab';
- default:
- return string;
- }
- };
- }).call(this);
|