X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fcore%2Fdocument%2Ftext%2FFormattedText.java;h=350abf364a37f7df01345109f645dc8fabe69404;hp=b9d42a2db4bb0bb1d29eafc7c60cbd69aa0f4f43;hb=168cf05300cec2bb4c0607711b752609976b2901;hpb=f9ba1a34f75fc8bfe9e6507762947566c8e22bce 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..350abf3 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,14 +1,32 @@ 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; +import static eu.svjatoslav.sixth.core.document.Utils.addIndentExceptFirstLine; + 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){ @@ -17,12 +35,24 @@ public class FormattedText { return formattedText; } - public String compileMd(){ + public String toMD(int indent){ StringBuilder sb = new StringBuilder(); for (FormattedTextElement element : elements) - sb.append(element.compileMd()); + sb.append(element.toMD()); + + return addIndentExceptFirstLine(sb.toString(), indent); + } + + private Tokenizer getTokenizer(String contents) { + final Tokenizer tokenizer = new Tokenizer(contents); + tokenizer.addTerminator(Hyperlink.orgTerminator); + tokenizer.addTerminator(Hyperlink.orgTerminator2); + return tokenizer; + } + - return sb.toString(); + public String toString(){ + return toMD(0); } }