Make rhino error support better

This commit is contained in:
Luke Page
2012-07-28 21:09:13 +01:00
parent e0ebaeeb55
commit 1199ce41b0

View File

@@ -8,13 +8,14 @@ function loadStyleSheet(sheet, callback, reload, remaining) {
});
parser.parse(input, function (e, root) {
if (e) {
print("Error: " + e.toSource());
quit(1);
return error(e, sheetName);
}
try {
callback(e, root, sheet, { local: false, lastModified: 0, remaining: remaining });
} catch(e) {
error(e, sheetName);
}
callback(null, root, sheet, { local: false, lastModified: 0, remaining: remaining });
});
// callback({}, sheet, { local: true, remaining: remaining });
}
function writeFile(filename, content) {
@@ -41,22 +42,57 @@ function writeFile(filename, content) {
print('lesscss: couldn\'t open file ' + name);
quit(1);
}
var result;
var parser = new less.Parser();
parser.parse(input, function (e, root) {
if (e) {
quit(1);
} else {
result = root.toCSS();
if (output) {
writeFile(output, result);
print("Written to " + output);
try {
var parser = new less.Parser();
parser.parse(input, function (e, root) {
if (e) {
error(e, name);
quit(1);
} else {
print(result);
result = root.toCSS();
if (output) {
writeFile(output, result);
print("Written to " + output);
} else {
print(result);
}
quit(0);
}
quit(0);
}
});
});
}
catch(e) {
error(e, name);
quit(1);
}
print("done");
}(arguments));
function error(e, filename) {
var content = "Error : " + filename + "\n";
filename = e.filename || filename;
if (e.message) {
content += e.message + "\n";
}
var errorline = function (e, i, classname) {
if (e.extract[i]) {
content +=
String(parseInt(e.line) + (i - 1)) +
":" + e.extract[i] + "\n";
}
};
if (e.stack) {
content += e.stack;
} else if (e.extract) {
content += 'on line ' + e.line + ', column ' + (e.column + 1) + ':\n';
errorline(e, 0);
errorline(e, 1);
errorline(e, 2);
}
print(content);
}