requisite
Version:
A cosmic javascript bundler.
52 lines (48 loc) • 1.89 kB
JavaScript
// Generated by CoffeeScript 1.7.1
var formatErrorMessage;
formatErrorMessage = function(source, filename, err) {
var carets, col, first_column, first_line, l, last_column, last_line, lines, _ref;
_ref = err.location, first_line = _ref.first_line, last_line = _ref.last_line, first_column = _ref.first_column, last_column = _ref.last_column;
lines = source.split('\n');
l = lines[first_line];
lines[first_line] = (l.substring(0, first_column)) + '\x1B[91m' + l.substring(first_column);
l = lines[last_line];
if (first_line === last_line) {
col = last_column + 6;
} else {
col = last_column;
}
lines[last_line] = (l.substring(0, col)) + '\x1B[39m' + (l.substring(col));
lines = lines.slice(first_line, last_line + 1);
carets = Array(first_column + 1).join(' ') + ("\x1B[91m" + (Array(last_column + 2 - first_column).join('^')) + "\x1B[39m");
lines.push(carets);
return "" + filename + ":" + (first_line + 1) + ":" + (first_column + 1) + ": " + err.name + ": " + err.message + "\n" + (lines.join('\n')) + "\n";
};
module.exports = function(options, callback) {
var coffee, coffeeOpts, err, js, res, v3SourceMap, _ref;
coffee = require('coffee-script');
coffeeOpts = {
bare: true
};
if (options.sourceMap) {
coffeeOpts.sourceMap = options.sourceMap;
coffeeOpts.filename = options.filename;
coffeeOpts.sourceFiles = [options.filename];
}
try {
res = coffee.compile(options.source, coffeeOpts);
} catch (_error) {
err = _error;
if (err.location != null) {
err.formattedMessage = formatErrorMessage(options.source, options.filename, err);
}
return callback(err);
}
if (res.v3SourceMap != null) {
js = res.js, v3SourceMap = res.v3SourceMap;
} else {
_ref = [res, void 0], js = _ref[0], v3SourceMap = _ref[1];
}
return callback(null, js, v3SourceMap);
};
//# sourceMappingURL=coffee.map