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);
}
}
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);
}
}
}
}
Aggregations