X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fcore%2Fdocument%2Ftext%2FFormattedText.java;h=1b51320715c3faafbaaed006c61f076e6fac1285;hb=e8052e0b1948260c3701bfe80dfaa8fdf5c38053;hp=b9d42a2db4bb0bb1d29eafc7c60cbd69aa0f4f43;hpb=f9ba1a34f75fc8bfe9e6507762947566c8e22bce;p=sixth.git diff --git a/src/main/java/eu/svjatoslav/sixth/core/document/text/FormattedText.java b/src/main/java/eu/svjatoslav/sixth/core/document/text/FormattedText.java index b9d42a2..1b51320 100644 --- a/src/main/java/eu/svjatoslav/sixth/core/document/text/FormattedText.java +++ b/src/main/java/eu/svjatoslav/sixth/core/document/text/FormattedText.java @@ -1,28 +1,54 @@ package eu.svjatoslav.sixth.core.document.text; +import eu.svjatoslav.commons.string.tokenizer.Tokenizer; +import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch; + import java.util.ArrayList; import java.util.List; +import static eu.svjatoslav.sixth.core.document.Helper.TG_HYPERLINK; + public class FormattedText { List elements = new ArrayList<>(); - public void parseOrgSyntax(String orgText){ - PlainText plainText = new PlainText(orgText); - elements.add(plainText); + public void parseOrgSyntax(String orgText) { + + Tokenizer tokenizer = getTokenizer(orgText); + while (tokenizer.hasMoreContent()) { + final TokenizerMatch token = tokenizer.getNextToken(); + + if (token.isGroup(TG_HYPERLINK)){ + elements.add(Hyperlink.fromOrg(token)); + continue; + } + + PlainText plainText = new PlainText(token.token); + elements.add(plainText); + } + } + public static FormattedText fromOrg(String orgText){ FormattedText formattedText = new FormattedText(); formattedText.parseOrgSyntax(orgText); return formattedText; } - public String compileMd(){ + public String toMD(){ StringBuilder sb = new StringBuilder(); for (FormattedTextElement element : elements) - sb.append(element.compileMd()); + sb.append(element.toMD()); return sb.toString(); } + + private Tokenizer getTokenizer(String contents) { + final Tokenizer tokenizer = new Tokenizer(contents); + tokenizer.addTerminator(Hyperlink.orgTerminator); + tokenizer.addTerminator(Hyperlink.orgTerminator2); + return tokenizer; + } + }