private Formatter createFormatter()

in tools/maven-plugin/src/main/java/org/apache/batchee/tools/maven/doc/ComponentDocumentationGenerator.java [146:223]


    private Formatter createFormatter() {
        if (formatter == null || formatter.startsWith("adoc")) {
            final int level = "adoc".equals(formatter) || formatter == null ? 1 : Integer.parseInt(formatter.substring("adoc".length()));
            final String prefix = buildPrefix('=', level);

            return new Formatter() {
                @Override
                public void begin(final Writer writer) throws IOException {
                    // no-op
                }

                @Override
                public void beginClass(final Writer writer, final String className, final String doc) throws IOException {
                    writer.append(prefix).append(" ").append(className).append("\n\n");
                    if (doc != null) {
                        writer.append(doc).append("\n\n");
                    }
                    writer.append("|===\n|Name|Description\n");
                }

                @Override
                public void add(final Writer writer, final FieldDoc doc) throws IOException {
                    writer.append("|").append(doc.getName()).append("|").append(doc.getDoc() == null ? "-" : doc.getDoc()).append("\n");
                }

                @Override
                public void endClass(final Writer writer) throws IOException {
                    writer.append("|===\n\n");
                }

                @Override
                public void end(final Writer writer) throws IOException {
                    // no-op
                }
            };
        } else if (formatter.startsWith("md")) {
            final String prefix = buildPrefix('#', "md".equals(formatter) ? 1 : Integer.parseInt(formatter.substring("md".length())));

            return new Formatter() {
                @Override
                public void begin(final Writer writer) throws IOException {
                    // no-op
                }

                @Override
                public void beginClass(final Writer writer, final String className, final String doc) throws IOException {
                    writer.append(prefix).append(" ").append(className).append("\n\n");
                    if (doc != null) {
                        writer.append(doc).append("\n\n");
                    }
                }

                @Override
                public void add(final Writer writer, final FieldDoc doc) throws IOException {
                    writer.append("* `").append(doc.getName()).append('`').append(doc.getDoc() == null ? "" : ": " + doc.getDoc()).append("\n");
                }

                @Override
                public void endClass(final Writer writer) throws IOException {
                    writer.append('\n');
                }

                @Override
                public void end(final Writer writer) throws IOException {
                    // no-op
                }
            };
        }
        try {
            return Formatter.class.cast(Thread.currentThread().getContextClassLoader().loadClass(formatter.trim()).newInstance());
        } catch (final InstantiationException e) {
            throw new IllegalArgumentException(e);
        } catch (final IllegalAccessException e) {
            throw new IllegalArgumentException(e);
        } catch (final ClassNotFoundException e) {
            throw new IllegalArgumentException(e);
        }
    }