in src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java [210:242]
private ScriptError getScriptError(
String documentFragment, String offendingInput, int lineOffset, int columnOffset, String message) {
if (StringUtils.isNotEmpty(offendingInput)) {
String longestContiguousOffendingSequence = null;
if (documentFragment.contains(offendingInput)) {
longestContiguousOffendingSequence = offendingInput;
} else {
longestContiguousOffendingSequence = getContiguousOffendingSequence(offendingInput);
}
int offendingInputIndex = documentFragment.indexOf(longestContiguousOffendingSequence);
if (offendingInputIndex > -1) {
String textBeforeError = documentFragment.substring(0, offendingInputIndex);
int line = lineOffset;
int lastNewLineIndex = 0;
for (String s : new String[] {"\r\n", "\r", "\n"}) {
int l = textBeforeError.split(s, -1).length - 1;
if (l + lineOffset > line) {
line = l + lineOffset;
int ix = textBeforeError.lastIndexOf(s);
if (ix > 0) {
lastNewLineIndex = ix + s.length() - 1;
}
}
}
int column = textBeforeError.substring(lastNewLineIndex).length();
if (column != columnOffset) {
column += columnOffset;
}
return new ScriptError(line, column, longestContiguousOffendingSequence + ": " + message);
}
}
return new ScriptError(lineOffset, columnOffset, message);
}