Moved Org Mode support to dedicated repository and project.
[sixth.git] / src / main / java / eu / svjatoslav / sixth / core / document / Document.java
diff --git a/src/main/java/eu/svjatoslav/sixth/core/document/Document.java b/src/main/java/eu/svjatoslav/sixth/core/document/Document.java
deleted file mode 100644 (file)
index c61d613..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-package eu.svjatoslav.sixth.core.document;
-
-import eu.svjatoslav.commons.string.tokenizer.InvalidSyntaxException;
-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.PRESERVE;
-import static eu.svjatoslav.sixth.core.document.Helper.*;
-import static eu.svjatoslav.sixth.core.document.text.FormattedText.fromOrg;
-
-public class Document {
-    public final Heading rootHeading = new Heading( null , 0, null);
-    private Heading currentHeading = rootHeading;
-
-    public Heading createHeading(FormattedText name, int targetLevel){
-        if (currentHeading.level == (targetLevel - 1)){
-            Heading newHeading = new Heading(name, targetLevel, currentHeading);
-            currentHeading.addChild(newHeading);
-            currentHeading = newHeading;
-            return newHeading;
-        }
-
-        if (currentHeading.level > (targetLevel - 1)){
-            currentHeading = currentHeading.parent;
-            return createHeading(name, targetLevel);
-        }
-
-        Heading missingIntermediate = new Heading(fromOrg("<noname>"), currentHeading.level + 1, currentHeading);
-        currentHeading.addChild(missingIntermediate);
-        currentHeading = missingIntermediate;
-        return createHeading(name, targetLevel);
-    }
-
-    public Heading getCurrentHeading(){
-        return currentHeading;
-    }
-
-    private void parseHeading(TokenizerMatch token) throws InvalidSyntaxException {
-        String[] headingSections = token.getRegExpGroups();
-        int level = headingSections[0].length();
-        String title = headingSections[1];
-        createHeading(fromOrg(title), level);
-    }
-
-    public void parse(String fileContentsAsString) throws InvalidSyntaxException {
-        final Tokenizer tokenizer = new Tokenizer(fileContentsAsString);
-
-        // Org heading:
-        // "*** Example Heading 1234"
-        tokenizer.addTerminator(PRESERVE, "(\\*+)[ \\t](.*)\\r?\\n", TG_HEADING);
-
-        // Org list. Examples:
-        // "   + my list title"
-        // "   - my list title"
-        tokenizer.addTerminator(PRESERVE, "([ \\t]*)(\\+|-)[ \\t]+(.*)?\\r?\\n", TG_LIST);
-
-        // "   * my list title"
-        tokenizer.addTerminator(PRESERVE, "([ \\t]+)(\\*)[ \\t]+(.*)?\\r?\\n", TG_LIST);
-
-        // TODO: add numbered list
-
-        // DocumentProperty:
-        // "#+OPTIONS: H:20 num:20"
-        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
-
-
-        // normal text
-        tokenizer.addTerminator(PRESERVE,".*\\r?\\n", TG_NORMAL_TEXT);
-
-        while (tokenizer.hasMoreContent()) {
-            final TokenizerMatch tm = tokenizer.getNextToken();
-
-            if (tm.isGroup(TG_HEADING)){
-                parseHeading(tm);
-                continue;
-            }
-
-            currentHeading.parse(tm);
-        }
-
-    }
-}