X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fcore%2Fdocument%2FDocument.java;h=c61d613842249402978b07ba39afc865df307542;hp=c4e18cdd59805c570d821432c0b9aa75ada0df67;hb=9b683d223e06fc5ec9e2561c659de5a79d3a8194;hpb=e8052e0b1948260c3701bfe80dfaa8fdf5c38053 diff --git a/src/main/java/eu/svjatoslav/sixth/core/document/Document.java b/src/main/java/eu/svjatoslav/sixth/core/document/Document.java index c4e18cd..c61d613 100644 --- a/src/main/java/eu/svjatoslav/sixth/core/document/Document.java +++ b/src/main/java/eu/svjatoslav/sixth/core/document/Document.java @@ -5,7 +5,6 @@ import eu.svjatoslav.commons.string.tokenizer.Tokenizer; import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch; import eu.svjatoslav.sixth.core.document.text.FormattedText; -import static eu.svjatoslav.commons.string.tokenizer.Terminator.TerminationStrategy.DROP; import static eu.svjatoslav.commons.string.tokenizer.Terminator.TerminationStrategy.PRESERVE; import static eu.svjatoslav.sixth.core.document.Helper.*; import static eu.svjatoslav.sixth.core.document.text.FormattedText.fromOrg; @@ -54,18 +53,47 @@ public class Document { // Org list. Examples: // " + my list title" // " - my list title" - tokenizer.addTerminator(PRESERVE, "([ \\t]*)(\\+|-)[ \\t]?(.*)?\\r?\\n", TG_LIST); + tokenizer.addTerminator(PRESERVE, "([ \\t]*)(\\+|-)[ \\t]+(.*)?\\r?\\n", TG_LIST); // " * my list title" - tokenizer.addTerminator(PRESERVE, "([ \\t]+)(\\*)[ \\t]?(.*)?\\r?\\n", TG_LIST); + tokenizer.addTerminator(PRESERVE, "([ \\t]+)(\\*)[ \\t]+(.*)?\\r?\\n", TG_LIST); + + // TODO: add numbered list // DocumentProperty: // "#+OPTIONS: H:20 num:20" - tokenizer.addTerminator(PRESERVE, "#\\+.+:.*\\r?\\n", TG_DOCUMENT_PROPERTY); + tokenizer.addTerminator(PRESERVE, "#\\+([^\\s]+):(.*)\\r?\\n", TG_DOCUMENT_PROPERTY); + + // Drawer property: + // " :ID: 533734b9-0456-4448-9830-a43646345615" + tokenizer.addTerminator(PRESERVE, "([ \\t]*):([^\\s]+):(.*)\\r?\\n", TG_DRAWER_PROPERTY); + + + // multiline code block + tokenizer.addTerminator(PRESERVE, + "([ \\t]*)#\\+BEGIN_SRC" + // source begin identifier + "(([ \\t]+)(.*))?(\\r?\\n)" + // source block parameters + "((?:.|\\n|\\r)*?)" + // source content + "(\\r?\\n)([ \\t]*)#\\+END_SRC(.*)\\r?\\n" // source end identifier + , TG_MULTILINE_CODE); + + // verse + tokenizer.addTerminator(PRESERVE, + "([ \\t]*)#\\+BEGIN_VERSE" + // verse begin identifier + "(([ \\t]+)(.*))?(\\r?\\n)" + // verse block parameters + "((?:.|\\n|\\r)*?)" + // verse + "(\\r?\\n)([ \\t]*)#\\+END_VERSE(.*)\\r?\\n" // verse end identifier + , TG_VERSE); + + + // TODO: add support for export blocks: + // #+begin_export latex + // \clearpage + //#+end_export - // newline - tokenizer.addTerminator(DROP,"\\r?\\n", TG_NEWLINE); + // normal text + tokenizer.addTerminator(PRESERVE,".*\\r?\\n", TG_NORMAL_TEXT); while (tokenizer.hasMoreContent()) { final TokenizerMatch tm = tokenizer.getNextToken();