private String escapeMarkdown()

in doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSink.java [243:295]


        private String escapeMarkdown(LastTwoLinesBufferingWriter writer, String text) {
            if (text == null) {
                return "";
            }
            text = escapeHtml(writer, text); // assume UTF-8 output, i.e. only use the mandatory XML entities
            int length = text.length();
            StringBuilder buffer = new StringBuilder(length);

            for (int i = 0; i < length; ++i) {
                char c = text.charAt(i);
                switch (c) {
                    case '\\':
                    case '_':
                    case '`':
                    case '[':
                    case ']':
                    case '(':
                    case ')':
                    case '!':
                        // always escape the previous characters as potentially everywhere relevant
                        buffer.append(escapeMarkdown(c));
                        break;
                    case '*':
                    case '+':
                    case '-':
                        // only relevant for unordered lists or horizontal rules
                        if (isInBlankLine(buffer, writer)) {
                            buffer.append(escapeMarkdown(c));
                        } else {
                            buffer.append(c);
                        }
                        break;
                    case '=':
                    case '#':
                        if (this == HEADING || isInBlankLine(buffer, writer)) {
                            buffer.append(escapeMarkdown(c));
                        } else {
                            buffer.append(c);
                        }
                        break;
                    case '.':
                        if (isAfterDigit(buffer, writer)) {
                            buffer.append(escapeMarkdown(c));
                        } else {
                            buffer.append(c);
                        }
                        break;
                    default:
                        buffer.append(c);
                }
            }
            return buffer.toString();
        }