1 package eu.svjatoslav.sixth.core.document.text;
3 import eu.svjatoslav.commons.string.tokenizer.Tokenizer;
4 import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch;
6 import java.util.ArrayList;
9 import static eu.svjatoslav.sixth.core.document.Helper.TG_HYPERLINK;
11 public class FormattedText {
12 List<FormattedTextElement> elements = new ArrayList<>();
14 public void parseOrgSyntax(String orgText) {
16 Tokenizer tokenizer = getTokenizer(orgText);
17 while (tokenizer.hasMoreContent()) {
18 final TokenizerMatch token = tokenizer.getNextToken();
20 if (token.isGroup(TG_HYPERLINK)){
21 elements.add(Hyperlink.fromOrg(token));
25 PlainText plainText = new PlainText(token.token);
26 elements.add(plainText);
32 public static FormattedText fromOrg(String orgText){
33 FormattedText formattedText = new FormattedText();
34 formattedText.parseOrgSyntax(orgText);
39 StringBuilder sb = new StringBuilder();
41 for (FormattedTextElement element : elements)
42 sb.append(element.toMD());
47 private Tokenizer getTokenizer(String contents) {
48 final Tokenizer tokenizer = new Tokenizer(contents);
49 tokenizer.addTerminator(Hyperlink.orgTerminator);
50 tokenizer.addTerminator(Hyperlink.orgTerminator2);