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;fp=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fcore%2Fdocument%2Ftext%2FFormattedText.java;h=ae6a42151fec0adda690dd137ad1700f5c9ad036;hp=b9d42a2db4bb0bb1d29eafc7c60cbd69aa0f4f43;hb=e37d8d2a8afaf35a27bc65d8d700eeea5ed5bd46;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..ae6a421 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,17 +1,34 @@ package eu.svjatoslav.sixth.core.document.text; +import eu.svjatoslav.commons.string.tokenizer.InvalidSyntaxException; +import eu.svjatoslav.commons.string.tokenizer.Tokenizer; +import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch; + import java.util.ArrayList; import java.util.List; 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) throws InvalidSyntaxException { + + Tokenizer tokenizer = getTokenizer(orgText); + while (tokenizer.hasMoreContent()) { + final TokenizerMatch token = tokenizer.getNextToken(); + + if (token.terminator == Hyperlink.orgTerminator){ + elements.add(Hyperlink.fromOrg(token)); + continue; + } + + PlainText plainText = new PlainText(token.token); + elements.add(plainText); + } + } - public static FormattedText fromOrg(String orgText){ + + public static FormattedText fromOrg(String orgText) throws InvalidSyntaxException { FormattedText formattedText = new FormattedText(); formattedText.parseOrgSyntax(orgText); return formattedText; @@ -25,4 +42,11 @@ public class FormattedText { return sb.toString(); } + + private Tokenizer getTokenizer(String contents) { + final Tokenizer tokenizer = new Tokenizer(contents); + tokenizer.addTerminator(Hyperlink.orgTerminator); + return tokenizer; + } + }