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<FormattedTextElement> 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;
return sb.toString();
}
+
+ private Tokenizer getTokenizer(String contents) {
+ final Tokenizer tokenizer = new Tokenizer(contents);
+ tokenizer.addTerminator(Hyperlink.orgTerminator);
+ return tokenizer;
+ }
+
}