Search in sources :

Example 1 with Link

use of com.vladsch.flexmark.ast.Link in project jspwiki by apache.

the class JSPWikiLinkNodePostProcessor method process.

/**
 * {@inheritDoc}
 *
 * @see PostProcessor#process(NodeTracker, Node)
 */
@Override
public void process(final NodeTracker state, final Node node) {
    if (node instanceof Link) {
        JSPWikiLink link = replaceLinkWithJSPWikiLink(state, node);
        final NodePostProcessorState<JSPWikiLink> linkPostProcessor;
        if (linkOperations.isAccessRule(link.getUrl().toString())) {
            linkPostProcessor = new AccessRuleLinkNodePostProcessorState(m_context);
        } else if (linkOperations.isMetadata(link.getUrl().toString())) {
            linkPostProcessor = new MetadataLinkNodePostProcessorState(m_context);
        } else if (linkOperations.isPluginLink(link.getUrl().toString())) {
            linkPostProcessor = new PluginLinkNodePostProcessorState(m_context);
        } else if (linkOperations.isVariableLink(link.getUrl().toString())) {
            linkPostProcessor = new VariableLinkNodePostProcessorState(m_context);
        } else if (linkOperations.isExternalLink(link.getUrl().toString())) {
            linkPostProcessor = new ExternalLinkNodePostProcessorState(m_context);
        } else if (linkOperations.isInterWikiLink(link.getUrl().toString())) {
            linkPostProcessor = new InterWikiLinkNodePostProcessorState(m_context, document);
        } else if (StringUtils.startsWith(link.getUrl().toString(), "#")) {
            linkPostProcessor = new LocalFootnoteLinkNodePostProcessorState(m_context);
        } else if (TextUtil.isNumber(link.getUrl().toString())) {
            linkPostProcessor = new LocalFootnoteRefLinkNodePostProcessorState(m_context);
        } else {
            linkPostProcessor = new LocalLinkNodePostProcessorState(m_context);
        }
        linkPostProcessor.process(state, link);
    }
}
Also used : JSPWikiLink(org.apache.wiki.markdown.nodes.JSPWikiLink) Link(com.vladsch.flexmark.ast.Link) JSPWikiLink(org.apache.wiki.markdown.nodes.JSPWikiLink)

Example 2 with Link

use of com.vladsch.flexmark.ast.Link in project flexmark-java by vsch.

the class YouTubeLinkNodePostProcessor method process.

@Override
public void process(NodeTracker state, Node node) {
    if (node instanceof Link) {
        Node previous = node.getPrevious();
        if (previous instanceof Text) {
            final BasedSequence chars = previous.getChars();
            if (chars.endsWith("@") && chars.isContinuedBy(node.getChars())) {
                // trim previous chars to remove '@'
                previous.setChars(chars.subSequence(0, chars.length() - 1));
                YouTubeLink youTubeLink = new YouTubeLink((Link) node);
                youTubeLink.takeChildren(node);
                node.unlink();
                previous.insertAfter(youTubeLink);
                state.nodeRemoved(node);
                state.nodeAddedWithChildren(youTubeLink);
            }
        }
    }
}
Also used : YouTubeLink(com.vladsch.flexmark.ext.youtube.embedded.YouTubeLink) Node(com.vladsch.flexmark.ast.Node) BasedSequence(com.vladsch.flexmark.util.sequence.BasedSequence) Text(com.vladsch.flexmark.ast.Text) Link(com.vladsch.flexmark.ast.Link) YouTubeLink(com.vladsch.flexmark.ext.youtube.embedded.YouTubeLink)

Aggregations

Link (com.vladsch.flexmark.ast.Link)2 Node (com.vladsch.flexmark.ast.Node)1 Text (com.vladsch.flexmark.ast.Text)1 YouTubeLink (com.vladsch.flexmark.ext.youtube.embedded.YouTubeLink)1 BasedSequence (com.vladsch.flexmark.util.sequence.BasedSequence)1 JSPWikiLink (org.apache.wiki.markdown.nodes.JSPWikiLink)1