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("/")) { 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) .withUrl(resolvedURL.toString());
@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; }