private static String mdToAdoc()

in src/main/java/org/apache/tomee/website/Examples.java [192:290]


    private static String mdToAdoc(final String s) {
        final Pattern link = Pattern.compile("(.*)\\[([^\\]]*)\\]\\(([^\\)]*)\\)(.*)");

        try (final StringWriter writer = new StringWriter();
             final BufferedReader reader = new BufferedReader(new StringReader(s))) {
            String line;
            while ((line = reader.readLine()) != null) {
                if (line.startsWith("Title: ")) {
                    continue;
                }
                if (line.startsWith("#")) {
                    for (int i = 0; i < line.length(); i++) {
                        if (line.charAt(i) == '#') {
                            writer.append('=');
                        } else {
                            writer.append(" ").append(line.substring(i));
                            break;
                        }
                    }
                } else if (line.startsWith("    package") || line.startsWith("    import") || line.startsWith("    public ") || line.startsWith("    @")) { // java code
                    writer.append("\n[source,java]\n----\n");
                    writer.append(line.replaceFirst("    ", "")).append('\n');
                    while ((line = reader.readLine()) != null) {
                        writer.append(line.replaceFirst("    ", "")).append('\n');
                        if ("    }".equals(line)) {
                            writer.append("----\n");
                            break;
                        }
                    }
                } else if (line.startsWith("    <")) { // xml code
                    writer.append("\n[source,xml]\n----\n");
                    if (line.startsWith("    <?")) { // prolog
                        writer.append(line.replaceFirst("    ", "")).append('\n');
                        line = reader.readLine();
                    }
                    while (line != null && line.trim().isEmpty()) {
                        line = reader.readLine();
                    }
                    if (line.trim().startsWith("<!--")) {
                        if (line.contains("-->")) {
                            writer.append(line.replaceFirst("    ", "")).append('\n');
                        } else {
                            do {
                                writer.append(line.replaceFirst("    ", "")).append('\n');
                            } while ((line = reader.readLine()) != null && !line.trim().equals("-->"));
                            writer.append(line.replaceFirst("    ", "")).append('\n');
                        }
                        line = reader.readLine();
                        while (line != null && line.trim().isEmpty()) {
                            line = reader.readLine();
                        }
                    }

                    if (line.trim().endsWith("/>")) {
                        writer.append(line.replaceFirst("    ", "")).append('\n');
                        writer.append("----\n");
                    } else {
                        final int space = line.indexOf(' ', 5);
                        final String end = "</" + line.substring(5, space < 0 ? line.indexOf('>') : space) + ">";
                        writer.append(line.replaceFirst("    ", "")).append('\n');
                        while ((line = reader.readLine()) != null) {
                            writer.append(line.replaceFirst("    ", "")).append('\n');
                            if (end.equals(line.trim())) {
                                writer.append("----\n");
                                break;
                            }
                        }
                    }
                } else if (line.startsWith("    -------------------------------------------------------")) { // run output
                    writer.append("\n[source]\n----\n");
                    writer.append(line.replaceFirst("    ", "")).append('\n');
                    while ((line = reader.readLine()) != null) {
                        writer.append(line.replaceFirst("    ", "")).append('\n');
                        if (line.startsWith("    Tests run:") && !line.contains("Time elapsed:")) {
                            writer.append("----\n");
                            break;
                        }
                    }
                } else if (line.startsWith(">")) {
                    writer.append("\nNOTE: ").append(line.substring(1)).append("\n");
                } else {
                    final Matcher matcher = link.matcher(line);
                    if (matcher.matches()) {
                        String l = matcher.group(3);
                        if (l.startsWith("../") && l.endsWith("README.html")) { // hack for old relative links
                            l = l.substring("../".length(), l.length() - "/README.html".length()) + ".html";
                        }
                        writer.append(matcher.group(1)).append("link:").append(l).append('[').append(matcher.group(2)).append(']').append(matcher.group(4));
                    } else {
                        writer.append(line);
                    }
                }
                writer.append('\n');
            }
            return writer.toString();
        } catch (final IOException e) {
            throw new IllegalStateException(e);
        }
    }