Skip to content

Commit

Permalink
Add encoding / decoding of URLs in markdown links.
Browse files Browse the repository at this point in the history
URLs which contain [] or () must be encoded in markdown links.
  • Loading branch information
Andreas committed Jun 8, 2017
1 parent 40419ea commit f9abf72
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,11 @@ public static List<Link> getLinks(List<Node> nodes,
}

public static Link toLink(ExpLinkNode node) {
return new Link(getText(node).or(""), node.title, node.url);
return new Link(getText(node).or(""), node.title, decodeUrl(node.url));
}

private static String decodeUrl(String url) {
return url.replace("%28", "(").replace("%29", ")").replace("%5B", "[").replace("%5D", "]");
}

public static Link toLink(RefLinkNode refLinkNode, ReferenceNode referenceNode) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,13 @@ private void writeLinks(OutputStreamWriter outputStreamWriter, List<Link> links)
throws IOException {
for (Link link : links) {
String url = Strings.nullToEmpty(link.getUrl());
// we have to escape ()[] with corresponding URL encodes!
url = urlEncode(url);
String text;
if (Strings.isNullOrEmpty(link.getText())) {
text = url;
} else {
text = link.getText();
text = urlEncode(link.getText());
}
if (Strings.isNullOrEmpty(link.getTitle())) {
writeLink(outputStreamWriter, text, url);
Expand All @@ -95,6 +97,10 @@ private void writeLinks(OutputStreamWriter outputStreamWriter, List<Link> links)
writeNewLine(outputStreamWriter);
}
}

private String urlEncode(String s) {
return s.replace("(", "%28").replace(")", "%29").replace("[", "%5B").replace("]", "%5D");
}

private void writeLink(OutputStreamWriter outputStreamWriter, String text, String url)
throws IOException {
Expand Down

0 comments on commit f9abf72

Please sign in to comment.