}
private Exception parseLessException(Exception root) {
logger.debug("Parsing LESS Exception", root);
if (root instanceof ECMAException) {
ECMAException e = (ECMAException) root;
Object thrown = e.getThrown();
String type = null;
String message = null;
String filename = null;
int line = -1;
int column = -1;
List<String> extractList = new ArrayList<String>();
if (thrown instanceof ScriptObject) {
ScriptObject so = (ScriptObject) e.getThrown();
type = so.get("type").toString() + " Error";
message = so.get("message").toString();
filename = "";
if (so.has("filename")) {
filename = so.get("filename").toString();
}
if (so.has("line")) {
line = ((Long) so.get("line")).intValue();
}
if (so.has("column")) {
column = ((Double) so.get("column")).intValue();
}
if (so.has("extract")) {
NativeArray extract = (NativeArray) so.get("extract");
for (int i = 0; i < extract.size(); i++) {
if (extract.get(i) instanceof String) {
extractList.add(((String) extract.get(i))
.replace("\t", " "));
}
}
}
} else {
type = thrown.getClass().getSimpleName() + " Error";
message = e.getMessage().replaceFirst("[^:]+: ", "");
}
return new LessException(message, type, filename, line, column,
extractList);
}
return root;