public int getStringEndIndex()

in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/cleaners/CodeBlockParser.java [30:60]


    public int getStringEndIndex(String content, int fromIndex) {
        int endIndex = content.indexOf(endMarker, fromIndex);
        if (StringUtils.isNotBlank(escapeMarker)) {
            String escapedEndMarker = escapeMarker + endMarker;
            String escapedEscapeMarker = escapeMarker + escapeMarker;
            boolean ignoreEscapedEscapeMarker = escapedEndMarker.equals(escapedEscapeMarker);

            int index1 = content.indexOf(escapedEndMarker, fromIndex);
            int index2 = ignoreEscapedEscapeMarker ? -1 : content.indexOf(escapedEscapeMarker, fromIndex);

            while (true) {
                while (index2 >= 0 && index1 >= 0 && index1 <= endIndex && index2 <= index1) {
                    index1 = content.indexOf(escapedEndMarker, index2 + escapedEscapeMarker.length() * 2);
                    index2 = ignoreEscapedEscapeMarker
                            ? -1
                            : content.indexOf(escapedEscapeMarker, index2 + escapedEscapeMarker.length() * 2);
                }

                if (endIndex > 0 && index1 >= 0 && index1 <= endIndex) {
                    int continueSearchFrom = index1 + escapedEndMarker.length();
                    endIndex = content.indexOf(endMarker, continueSearchFrom);
                    index1 = content.indexOf(escapedEndMarker, continueSearchFrom);
                    index2 = ignoreEscapedEscapeMarker ? -1 : content.indexOf(escapedEscapeMarker, continueSearchFrom);
                } else {
                    break;
                }
            }
        }

        return endIndex;
    }