Use regular expression tokenizer. WIP
[sixth.git] / src / main / java / eu / svjatoslav / sixth / core / document / text / Hyperlink.java
index 9f64b09..5e6884c 100644 (file)
@@ -1,9 +1,41 @@
 package eu.svjatoslav.sixth.core.document.text;
 
+import eu.svjatoslav.commons.string.tokenizer.InvalidSyntaxException;
+import eu.svjatoslav.commons.string.tokenizer.Terminator;
+import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch;
+
+import static eu.svjatoslav.commons.string.tokenizer.Terminator.TerminationStrategy.PRESERVE;
+import static eu.svjatoslav.sixth.core.document.Helper.TG_HYPERLINK;
+
 public class Hyperlink implements FormattedTextElement {
 
+    public static final Terminator orgTerminator =
+            new Terminator(PRESERVE, "\\[\\[.*\\]\\]", TG_HYPERLINK);
+
+    private String label;
+    private String URL;
+
     @Override
     public String compileMd() {
-        return "-TODO-";
+        return "<URL: " + URL + ", LABEL: " + label + ">";
     }
+
+    public static Hyperlink fromOrg(TokenizerMatch tokenizerMatch) throws InvalidSyntaxException {
+        Hyperlink hyperlink = new Hyperlink();
+        hyperlink.parseOrgSyntax(tokenizerMatch);
+        return hyperlink;
+    }
+
+    private void parseOrgSyntax(TokenizerMatch tokenizerMatch) throws InvalidSyntaxException {
+//        Tokenizer tokenizer = new Tokenizer(tokenizerMatch.reminder);
+//        Terminator linkSeparator = tokenizer.addTerminator("][", PRESERVE);
+//
+//        URL = tokenizer.expectAndConsumeNextTerminatorToken(null).token;
+//
+//        if (tokenizer.hasMoreContent()){ // link label is optional
+//            tokenizer.expectAndConsumeNextTerminatorToken(linkSeparator);
+//            label = tokenizer.expectAndConsumeNextTerminatorToken(null).token;
+//        }
+    }
+
 }