requisite
Version:
A cosmic javascript bundler.
63 lines (58 loc) • 2.05 kB
JavaScript
// Generated by CoffeeScript 1.12.4
var formatErrorMessage, path;
path = require('path');
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;
if (last_line == null) {
last_line = first_line;
}
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, err, js, opts, ref, res, v3SourceMap;
try {
coffee = require('coffee-script');
} catch (error) {
err = error;
coffee = require('coffeescript');
}
opts = {
bare: true
};
if (options.sourceMap) {
opts.sourceMap = options.sourceMap;
opts.filename = options.filename;
opts.sourceFiles = [options.filename];
opts.sourceRoot = '';
}
try {
res = coffee.compile(options.source, opts);
} 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.js.map