diff --git a/serepo-markdown/src/main/java/ch/hsr/isf/serepo/markdown/MarkdownUtils.java b/serepo-markdown/src/main/java/ch/hsr/isf/serepo/markdown/MarkdownUtils.java
index e486386..c4617c1 100644
--- a/serepo-markdown/src/main/java/ch/hsr/isf/serepo/markdown/MarkdownUtils.java
+++ b/serepo-markdown/src/main/java/ch/hsr/isf/serepo/markdown/MarkdownUtils.java
@@ -80,7 +80,11 @@ public static List getLinks(List 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) {
diff --git a/serepo-markdown/src/main/java/ch/hsr/isf/serepo/markdown/MarkdownWriter.java b/serepo-markdown/src/main/java/ch/hsr/isf/serepo/markdown/MarkdownWriter.java
index 1027dab..b56cfdf 100644
--- a/serepo-markdown/src/main/java/ch/hsr/isf/serepo/markdown/MarkdownWriter.java
+++ b/serepo-markdown/src/main/java/ch/hsr/isf/serepo/markdown/MarkdownWriter.java
@@ -81,11 +81,13 @@ private void writeLinks(OutputStreamWriter outputStreamWriter, List 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);
@@ -95,6 +97,10 @@ private void writeLinks(OutputStreamWriter outputStreamWriter, List 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 {