package eu.svjatoslav.sixth.core.document;
-import eu.svjatoslav.commons.string.String2;
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.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;
return createHeading(name, targetLevel);
}
- try {
- Heading missingIntermediate = new Heading(fromOrg("<noname>"), 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("<noname>"), currentHeading.level + 1, currentHeading);
+ currentHeading.addChild(missingIntermediate);
+ currentHeading = missingIntermediate;
+ return createHeading(name, targetLevel);
}
public Heading getCurrentHeading(){
}
private void parseHeading(TokenizerMatch token) throws InvalidSyntaxException {
- // expected sample heading:
- // ***** test heading
-
- String[] headingSections = String2.getGroups(token.token, "(\\*+)[ \\t](.*)\\r?\\n");
+ String[] headingSections = token.getRegExpGroups();
int level = headingSections[0].length();
String title = headingSections[1];
createHeading(fromOrg(title), level);
// Org heading:
// "*** Example Heading 1234"
- tokenizer.addTerminator(PRESERVE, "\\*+[ \\t].*\\r?\\n", TG_HEADING);
+ 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);
+ 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);
// 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()) {
continue;
}
- tokenizer.unreadToken();
- currentHeading.parse(tokenizer);
+ currentHeading.parse(tm);
}
}