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;
+// }
+ }
+
}