508003c5c0a7993d5882d0b14c2964a8157134b1
[sixth.git] / src / main / java / eu / svjatoslav / sixth / core / document / text / Hyperlink.java
1 package eu.svjatoslav.sixth.core.document.text;
2
3 import eu.svjatoslav.commons.string.tokenizer.Terminator;
4 import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch;
5
6 import static eu.svjatoslav.commons.string.tokenizer.Terminator.TerminationStrategy.PRESERVE;
7 import static eu.svjatoslav.sixth.core.document.Helper.TG_HYPERLINK;
8
9 public class Hyperlink implements FormattedTextElement {
10
11     public static final Terminator orgTerminator =
12             new Terminator(PRESERVE, "\\[\\[([\\s\\S]+)\\][ \\t\\r\\n]*\\[([\\s\\S]+)\\]\\]", TG_HYPERLINK);
13
14         public static final Terminator orgTerminator2 =
15             new Terminator(PRESERVE, "\\[\\[([\\s\\S]+)\\]\\]", TG_HYPERLINK);
16
17     private String label;
18     private String URL;
19
20     @Override
21     public String toMD() {
22
23         if (URL.startsWith("id:"))
24             return label; // TODO
25
26         return  "[" + label + "]("+ URL + ")";
27     }
28
29     public static Hyperlink fromOrg(TokenizerMatch tokenizerMatch) {
30         Hyperlink hyperlink = new Hyperlink();
31         hyperlink.parseOrg(tokenizerMatch);
32         return hyperlink;
33     }
34
35     private void parseOrg(TokenizerMatch tokenizerMatch) {
36         String[] regExpGroups = tokenizerMatch.getRegExpGroups();
37         URL = regExpGroups[0];
38         if (tokenizerMatch.terminator == orgTerminator){
39             label = regExpGroups[1];
40         }
41
42     }
43
44 }