public ProcessingResult process()

in mdresourcedecorator/src/main/java/org/apache/sling/mdresource/impl/md/MarkdownProcessor.java [49:92]


    public ProcessingResult process(final Reader reader,
            final Resource baseResource,
            final ProcessingInstructions inst) throws IOException {
        final ProcessingResult result = new ProcessingResult();

        final List<NodeHandler> handlers = new ArrayList<>();
        if ( inst.handleYamlFrontmatter ) {
            handlers.add(new YamlFrontMatterHandler());
        }
        if ( inst.extractTitle ) {
            handlers.add(new HeadingHandler());
        }

        final Document document = parser.parseReader(reader);

        Node currentNode = document.getFirstChild();
        while ( currentNode != null ) {
            boolean handled = false;
            for(final NodeHandler handler : handlers ) {
                handled = handler.consume(currentNode, result);
                if ( handled ) {
                    break;
                }
            }
            final Node nextNode = currentNode.getNext();
            if ( handled ) {
                currentNode.unlink();
            }

            currentNode = nextNode;
        }

        if ( document.hasChildren() && inst.renderHtml) {
            final HtmlRenderer.Builder builder = HtmlRenderer.builder();
            if ( inst.rewriteLinks ) {
                builder.linkResolverFactory(new CustomLinkResolverFactory(baseResource));
            }
            final HtmlRenderer htmlRenderer = builder.build();

            result.html = htmlRenderer.render(document);
        }

        return result;
    }