private ScriptError getScriptError()

in src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java [206:237]


    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);
    }