Refine search
private void renderEmbedLink(final EmbedLink node, final NodeRendererContext context, final HtmlWriter html) { if (context.isDoNotRenderLinks()) { context.renderChildren(node); } else { ResolvedLink resolvedLink = context.resolveLink(LinkType.LINK, node.getUrl().unescape(), null); html.attr("title", node.getText()) .attr("src", resolvedLink.getUrl()) .withAttr() .tag("embed", true); } }
@Override public ResolvedLink resolveLink(LinkType linkType, CharSequence url, Attributes attributes, Boolean urlEncode) { HashMap<String, ResolvedLink> resolvedLinks = resolvedLinkMap.get(linkType); if (resolvedLinks == null) { resolvedLinks = new HashMap<String, ResolvedLink>(); resolvedLinkMap.put(linkType, resolvedLinks); } String urlSeq = String.valueOf(url); ResolvedLink resolvedLink = resolvedLinks.get(urlSeq); if (resolvedLink == null) { resolvedLink = new ResolvedLink(linkType, urlSeq, attributes); if (!urlSeq.isEmpty()) { Node currentNode = renderingNode; for (LinkResolver linkResolver : myLinkResolvers) { resolvedLink = linkResolver.resolveLink(currentNode, this, resolvedLink); if (resolvedLink.getStatus() != LinkStatus.UNKNOWN) break; } if (urlEncode == null && rendererOptions.percentEncodeUrls || urlEncode != null && urlEncode) { resolvedLink = resolvedLink.withUrl(Escaping.percentEncodeUrl(resolvedLink.getUrl())); } } // put it in the map resolvedLinks.put(urlSeq, resolvedLink); } return resolvedLink; }
@SuppressWarnings("MethodMayBeStatic") void render(Image node, NodeRendererContext context, HtmlWriter html) { if (!(context.isDoNotRenderLinks() || isSuppressedLinkPrefix(node.getUrl(), context))) { String altText = new TextCollectingVisitor().collectAndGetText(node); ResolvedLink resolvedLink = context.resolveLink(LinkType.IMAGE, node.getUrl().unescape(), null, null); String url = resolvedLink.getUrl(); if (!node.getUrlContent().isEmpty()) { // reverse URL encoding of =, & String content = Escaping.percentEncodeUrl(node.getUrlContent()).replace("+", "%2B").replace("%3D", "=").replace("%26", "&"); url += content; } html.attr("src", url); html.attr("alt", altText); // we have a title part, use that if (node.getTitle().isNotNull()) { resolvedLink.getNonNullAttributes().replaceValue(Attribute.TITLE_ATTR, node.getTitle().unescape()); } else { resolvedLink.getNonNullAttributes().remove(Attribute.TITLE_ATTR); } html.attr(resolvedLink.getAttributes()); html.srcPos(node.getChars()).withAttr(resolvedLink).tagVoid("img"); } }
@Override public ResolvedLink resolveLink(Node node, LinkResolverContext context, ResolvedLink link) { if (link.getLinkType() == WIKI_LINK) { StringBuilder sb = new StringBuilder(); final boolean isWikiImage = node instanceof WikiImage; String wikiLink = link.getUrl(); int iMax = wikiLink.length(); boolean absolute = iMax > 0 && wikiLink.charAt(0) == '/'; return new ResolvedLink(LinkType.IMAGE, sb.toString(), null, LinkStatus.UNCHECKED); } else { return new ResolvedLink(LinkType.LINK, sb.toString(), null, LinkStatus.UNCHECKED);
String url = link.getUrl(); return link.withStatus(LinkStatus.VALID) .withUrl(url); } else if (url.startsWith("file:/")) { return link.withStatus(LinkStatus.VALID) .withUrl(url); } else if (url.startsWith(DocxRenderer.EMOJI_RESOURCE_PREFIX)) { return link.withStatus(LinkStatus.VALID) .withUrl(url); } else if (url.startsWith("/")) { if (docRootURL != null && !docRootURL.isEmpty()) { return link.withStatus(LinkStatus.VALID) .withUrl(url); return link.withStatus(LinkStatus.INVALID) .withUrl("http://" + url); } else if (!url.matches("^(?:[a-z]+:|#|\\?)")) { int pos = url.indexOf('#'); if (pos == 0) { return link.withStatus(LinkStatus.VALID); } else { if (pos > 0) { return link.withStatus(LinkStatus.VALID)
private void render(MailLink node, NodeRendererContext context, HtmlWriter html) { String text = node.getText().unescape(); if (context.isDoNotRenderLinks()) { html.text(text); } else { ResolvedLink resolvedLink = context.resolveLink(LinkType.LINK, text, null); html.raw("[").raw(text).raw("|mailto:").raw(resolvedLink.getUrl()).raw("]"); } }
if (node.isDefined()) { reference = node.getReferenceNode(referenceRepository); String url = reference.getUrl().unescape(); isSuppressed = isSuppressedLinkPrefix(url, context); resolvedLink = context.resolveLink(LinkType.LINK, url, null, null); if (reference.getTitle().isNotNull()) { resolvedLink.getNonNullAttributes().replaceValue(Attribute.TITLE_ATTR, reference.getTitle().unescape()); } else { resolvedLink.getNonNullAttributes().remove(Attribute.TITLE_ATTR); String normalizeRef = node.getReference().unescape(); resolvedLink = context.resolveLink(LinkType.LINK_REF, normalizeRef, null, null); if (resolvedLink.getStatus() == UNKNOWN) { resolvedLink = null; html.text(node.getChars().unescape()); } else { html.text(node.getChars().prefixOf(node.getChildChars()).unescape()); renderChildrenSourceLineWrapped(node, node.getText(), context, html); html.text(node.getChars().suffixOf(node.getChildChars()).unescape()); if (context.isDoNotRenderLinks() || isSuppressed) { context.renderChildren(node); } else { Attributes attributes = resolvedLink.getNonNullAttributes(); html.attr("href", resolvedLink.getUrl());
String url = reference.getUrl().unescape(); isSuppressed = isSuppressedLinkPrefix(url, context); resolvedLink = context.resolveLink(LinkType.IMAGE, url, null, null); if (reference.getTitle().isNotNull()) { resolvedLink.getNonNullAttributes().replaceValue(Attribute.TITLE_ATTR, reference.getTitle().unescape()); } else { resolvedLink.getNonNullAttributes().remove(Attribute.TITLE_ATTR); resolvedLink = context.resolveLink(LinkType.IMAGE_REF, normalizeRef, null, null); if (resolvedLink.getStatus() == UNKNOWN) { resolvedLink = null; html.text(node.getChars().unescape()); } else { if (!(context.isDoNotRenderLinks() || isSuppressed)) { String altText = new TextCollectingVisitor().collectAndGetText(node); Attributes attributes = resolvedLink.getNonNullAttributes(); html.attr("src", resolvedLink.getUrl()); html.attr("alt", altText);
@SuppressWarnings("MethodMayBeStatic") void render(AutoLink node, NodeRendererContext context, final HtmlWriter html) { final String text = node.getText().toString(); if (context.isDoNotRenderLinks() || isSuppressedLinkPrefix(node.getUrl(), context)) { html.text(text); } else { ResolvedLink resolvedLink = context.resolveLink(LinkType.LINK, text, null); html.srcPos(node.getText()).attr("href", resolvedLink.getUrl().startsWith("www.") ? context.getHtmlOptions().autolinkWwwPrefix + resolvedLink.getUrl() : resolvedLink.getUrl()) .withAttr(resolvedLink) .tag("a", false, false, new Runnable() { @Override public void run() { html.text(text); } }); } }
private void render(WikiImage node, NodeRendererContext context, HtmlWriter html) { if (!context.isDoNotRenderLinks()) { if (options.disableRendering) { html.text(node.getChars().unescape()); } else { String altText = node.getText().isNotNull() ? node.getText().toString() : node.getLink().unescape(); ResolvedLink resolvedLink = context.resolveLink(WikiLinkExtension.WIKI_LINK, node.getLink().unescape(), null); String url = resolvedLink.getUrl(); html.attr("src", url); html.attr("alt", altText); html.srcPos(node.getChars()).withAttr(resolvedLink).tagVoid("img"); } } }
private void render(Emoji node, NodeRendererContext context, HtmlWriter html) { final EmojiResolvedShortcut shortcut = EmojiResolvedShortcut.getEmojiText(node, myOptions.useShortcutType, myOptions.useImageType, myOptions.rootImagePath); if (shortcut.emoji == null || shortcut.emojiText == null) { // output as text html.text(":"); context.renderChildren(node); html.text(":"); } else { if (shortcut.isUnicode) { html.text(shortcut.emojiText); } else { ResolvedLink resolvedLink = context.resolveLink(LinkType.IMAGE, shortcut.emojiText, null); html.attr("src", resolvedLink.getUrl()); html.attr("alt", shortcut.alt); if (!myOptions.attrImageSize.isEmpty()) html.attr("height", myOptions.attrImageSize).attr("width", myOptions.attrImageSize); if (!myOptions.attrAlign.isEmpty()) html.attr("align", myOptions.attrAlign); if (!myOptions.attrImageClass.isEmpty()) html.attr("class", myOptions.attrImageClass); html.withAttr(resolvedLink); html.tagVoid("img"); } } }
private void render(WikiLink node, NodeRendererContext context, HtmlWriter html) { if (options.disableRendering) { html.text(node.getChars().unescape()); } else { ResolvedLink resolvedLink = context.resolveLink(WikiLinkExtension.WIKI_LINK, node.getLink().toString(), null); html.raw("["); html.raw(node.getText().isNotNull() ? node.getText().toString() : node.getPageRef().toString()); html.raw("|"); html.raw(resolvedLink.getUrl()); html.raw("]"); } }
private void render(Image node, NodeRendererContext context, final HtmlWriter html) { if (!(context.isDoNotRenderLinks() || CoreNodeRenderer.isSuppressedLinkPrefix(node.getUrl(), context))) { final String altText = new TextCollectingVisitor().collectAndGetText(node); ResolvedLink resolvedLink = context.resolveLink(LinkType.IMAGE, node.getUrl().unescape(), null, null); final String url = resolvedLink.getUrl(); if (node.getUrlContent().isEmpty()) { Attributes attributes = resolvedLink.getNonNullAttributes(); // need to take attributes for reference definition, then overlay them with ours attributes = context.extendRenderingNodeAttributes(node, AttributablePart.NODE, attributes); if (renderVideoImage(node, url, altText, attributes, html)) { return; } } context.delegateRender(); } }
String url = reference.getUrl().unescape(); isSuppressed = CoreNodeRenderer.isSuppressedLinkPrefix(url, context); resolvedLink = context.resolveLink(LinkType.IMAGE, url, null, null); if (reference.getTitle().isNotNull()) { resolvedLink.getNonNullAttributes().replaceValue(Attribute.TITLE_ATTR, reference.getTitle().unescape()); } else { resolvedLink.getNonNullAttributes().remove(Attribute.TITLE_ATTR); resolvedLink = context.resolveLink(LinkType.IMAGE_REF, normalizeRef, null, null); if (resolvedLink.getStatus() == LinkStatus.UNKNOWN) { resolvedLink = null; if (!(context.isDoNotRenderLinks() || isSuppressed)) { String altText = new TextCollectingVisitor().collectAndGetText(node); final String url = resolvedLink.getUrl(); Attributes attributes = resolvedLink.getNonNullAttributes(); if (renderVideoImage(node, url, altText, attributes, html)) { return;
private void render(final Link node, final DocxRendererContext docx) { ResolvedLink resolvedLink = docx.resolveLink(LinkType.LINK, node.getUrl().unescape(), null, null); // we have a title part, use that Attributes attributes = resolvedLink.getNonNullAttributes(); if (node.getTitle().isNotNull()) { attributes.replaceValue(Attribute.TITLE_ATTR, node.getTitle().unescape()); } else { attributes.remove(Attribute.TITLE_ATTR); } attributes = docx.extendRenderingNodeAttributes(AttributablePart.NODE, attributes); renderURL(node.getUrl(), docx, resolvedLink.getUrl(), attributes, new ChildRenderer(docx, node)); }
reference = node.getReferenceNode(referenceRepository); urlSrc = reference.getUrl(); String url = urlSrc.unescape(); if (reference.getTitle().isNotNull()) { resolvedLink.getNonNullAttributes().replaceValue(Attribute.TITLE_ATTR, reference.getTitle().unescape()); } else { resolvedLink.getNonNullAttributes().remove(Attribute.TITLE_ATTR); String normalizeRef = node.getReference().unescape(); resolvedLink = docx.resolveLink(LinkType.LINK_REF, normalizeRef, null, null); if (resolvedLink.getStatus() == UNKNOWN) { resolvedLink = null; Attributes attributes = resolvedLink.getNonNullAttributes(); renderURL(urlSrc, docx, resolvedLink.getUrl(), attributes, new ChildRenderer(docx, node));
private void render(final Image node, final DocxRendererContext docx) { String altText = new TextCollectingVisitor().collectAndGetText(node); ResolvedLink resolvedLink = docx.resolveLink(LinkType.IMAGE, node.getUrl().unescape(), null, null); String url = resolvedLink.getUrl(); Attributes attributes = resolvedLink.getNonNullAttributes(); if (!node.getUrlContent().isEmpty()) { // reverse URL encoding of =, & String content = Escaping.percentEncodeUrl(node.getUrlContent()).replace("+", "%2B").replace("%3D", "=").replace("%26", "&"); url += content; } if (!altText.isEmpty()) { attributes.replaceValue("alt", altText); } attributes = docx.extendRenderingNodeAttributes(AttributablePart.NODE, attributes); //String alt = node.getText().unescape(); renderImage(docx, url, attributes); }
@Override public ResolvedLink resolveLink(Node node, LinkResolverContext context, ResolvedLink link) { ResolvedLink result = link; for (String inputFileExtension : inputFileExtensions) { if (link.getLinkType() == LinkType.LINK) { String url = link.getUrl(); if (!url.startsWith("http://") && !url.startsWith("https://")) { if (url.endsWith("." + inputFileExtension)) { url = url.substring(0, url.length() - inputFileExtension.length()) + "html"; result = result.withStatus(LinkStatus.VALID).withUrl(url); return result; } else if (url.contains("." + inputFileExtension + "#")) { url = url.replace("." + inputFileExtension + "#", ".html#"); result = result.withStatus(LinkStatus.VALID).withUrl(url); return result; } } } } return result; }
ResolvedLink resolvedLink = docx.resolveLink(LinkType.IMAGE, shortcut.emojiText, null, null); String url = resolvedLink.getUrl(); Attributes attributes = resolvedLink.getNonNullAttributes();