1 package eu.svjatoslav.sixth.core.document.text;
3 import eu.svjatoslav.commons.string.tokenizer.InvalidSyntaxException;
4 import eu.svjatoslav.commons.string.tokenizer.Tokenizer;
5 import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch;
7 import java.util.ArrayList;
10 public class FormattedText {
11 List<FormattedTextElement> elements = new ArrayList<>();
13 public void parseOrgSyntax(String orgText) throws InvalidSyntaxException {
15 Tokenizer tokenizer = getTokenizer(orgText);
16 while (tokenizer.hasMoreContent()) {
17 final TokenizerMatch token = tokenizer.getNextToken();
19 if (token.terminator == Hyperlink.orgTerminator){
20 elements.add(Hyperlink.fromOrg(token));
24 PlainText plainText = new PlainText(token.token);
25 elements.add(plainText);
31 public static FormattedText fromOrg(String orgText) throws InvalidSyntaxException {
32 FormattedText formattedText = new FormattedText();
33 formattedText.parseOrgSyntax(orgText);
37 public String compileMd(){
38 StringBuilder sb = new StringBuilder();
40 for (FormattedTextElement element : elements)
41 sb.append(element.compileMd());
46 private Tokenizer getTokenizer(String contents) {
47 final Tokenizer tokenizer = new Tokenizer(contents);
48 tokenizer.addTerminator(Hyperlink.orgTerminator);