diff --git a/MarkdownTranslator.alusus b/MarkdownTranslator.alusus index b0cc709..2813b6c 100644 --- a/MarkdownTranslator.alusus +++ b/MarkdownTranslator.alusus @@ -254,8 +254,22 @@ class MarkdownTranslator [RegexType: type] { else this.output += str; } }), + // link with double brackets [[text]](url) + Rule("\\[\\[([^]\n]*)\\]\\]\\(([^ \t\n]+)\\)", closure(args: Array[String]) { + def linkText: String = String("[") + args(1) + String("]"); + if this.elementStack.getLength() == 0 this.jumpToLevel(String("p"), 1, false); + def target: CharsPtr = ""; + if this.linksInNewTab target = "target=\"_blank\"" + if this.onHtmlTag.isNull() { + this.output += String.format("%s", args(2).buf, target, linkText.buf); + } else { + def str: String = this.onHtmlTag("a", args(2), linkText); + if str != "" this.output += str + else this.output += String.format("%s", args(2).buf, target, linkText.buf); + } + }), // link - Rule("\\[([^\n\\x5D]*)\\]\\(([^()\n]+)\\)", closure(args: Array[String]) { + Rule("\\[([^]\n]*)\\]\\(([^ \t\n]+)\\)", closure(args: Array[String]) { if args(1) == "" args(1) = args(2); if this.elementStack.getLength() == 0 this.jumpToLevel(String("p"), 1, false); def target: CharsPtr = ""; @@ -269,7 +283,7 @@ class MarkdownTranslator [RegexType: type] { } }), // image - Rule("!\\[([^\n\\x5D]*)\\]\\(([^()\n]+)\\)", closure(args: Array[String]) { + Rule("!\\[([^]\n]*)\\]\\(([^()\n]+)\\)", closure(args: Array[String]) { if this.onHtmlTag.isNull() { this.output += String.format("", args(2).buf, args(1).buf); } else { @@ -328,7 +342,7 @@ class MarkdownTranslator [RegexType: type] { } }), // all chars - Rule("[^\n*\\\\`!\\x5B]+", closure(args: Array[String]) { + Rule("[^\n*\\\\`![]+", closure(args: Array[String]) { if this.elementStack.getLength() == 0 this.jumpToLevel(String("p"), 1, false); this.output += args(0); }),