X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fcore%2Fdocument%2FDocument.java;h=1f7ef2681b77cdf35d32adfdb69d22fb42ce177d;hb=06527b2a72ee8f1c8434288d522fe2fe8aea5e8b;hp=e626304ebb3a83871c91ffbe5c1019b9b7528234;hpb=e37d8d2a8afaf35a27bc65d8d700eeea5ed5bd46;p=sixth.git 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 e626304..1f7ef26 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; @@ -27,14 +26,10 @@ public class Document { return createHeading(name, targetLevel); } - try { - Heading missingIntermediate = new Heading(fromOrg(""), currentHeading.level + 1, currentHeading); - currentHeading.addChild(missingIntermediate); - currentHeading = missingIntermediate; - return createHeading(name, targetLevel); - } catch (InvalidSyntaxException e) { - throw new IllegalStateException("impossible situation"); - } + Heading missingIntermediate = new Heading(fromOrg(""), currentHeading.level + 1, currentHeading); + currentHeading.addChild(missingIntermediate); + currentHeading = missingIntermediate; + return createHeading(name, targetLevel); } public Heading getCurrentHeading(){ @@ -42,9 +37,10 @@ public class Document { } private void parseHeading(TokenizerMatch token) throws InvalidSyntaxException { - System.out.println("HEADING!! " + token.token); - int level = token.token.length()-1; -// createHeading(fromOrg(token.reminder), level); + String[] headingSections = token.getRegExpGroups(); + int level = headingSections[0].length(); + String title = headingSections[1]; + createHeading(fromOrg(title), level); } public void parse(String fileContentsAsString) throws InvalidSyntaxException { @@ -52,20 +48,22 @@ public class Document { // Org heading: // "*** Example Heading 1234" - tokenizer.addTerminator(PRESERVE, "\\*+\\s.*\\r?\\n", TG_HEADING); + tokenizer.addTerminator(PRESERVE, "(\\*+)[ \\t](.*)\\r?\\n", TG_HEADING); // Org list. Examples: // " + my list title" - // "+" - tokenizer.addTerminator(PRESERVE, "\\s*(\\+|-)(\\s.*)?\\r?\\n", TG_LIST); - tokenizer.addTerminator(PRESERVE, "\\s+\\*(\\s.*)?\\r?\\n", TG_LIST); + // " - my list title" + tokenizer.addTerminator(PRESERVE, "([ \\t]*)(\\+|-)[ \\t]+(.*)?\\r?\\n", TG_LIST); + + // " * my list title" + tokenizer.addTerminator(PRESERVE, "([ \\t]+)(\\*)[ \\t]+(.*)?\\r?\\n", TG_LIST); // DocumentProperty: // "#+OPTIONS: H:20 num:20" tokenizer.addTerminator(PRESERVE, "#\\+.+:.*\\r?\\n", TG_DOCUMENT_PROPERTY); // newline - tokenizer.addTerminator(DROP,"\\r?\\n", TG_NEWLINE); + tokenizer.addTerminator(PRESERVE,".*\\r?\\n", TG_NORMAL_TEXT); while (tokenizer.hasMoreContent()) { @@ -76,8 +74,7 @@ public class Document { continue; } - tokenizer.unreadToken(); - currentHeading.parse(tokenizer); + currentHeading.parse(tm); } }