X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fcore%2Fdocument%2Fcontent%2FListElement.java;fp=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fcore%2Fdocument%2Fcontent%2FListElement.java;h=e1cf33d36e595756d003e52b72969a2cb56f9d41;hp=a82fd53395394ef017afae9146cb881b62f5efc6;hb=1f96525468e7f76c1ce817a8a7b22c93a39e40b4;hpb=9522b4873da0b7872cf033c0762a58a73c1ba517 diff --git a/src/main/java/eu/svjatoslav/sixth/core/document/content/ListElement.java b/src/main/java/eu/svjatoslav/sixth/core/document/content/ListElement.java index a82fd53..e1cf33d 100644 --- a/src/main/java/eu/svjatoslav/sixth/core/document/content/ListElement.java +++ b/src/main/java/eu/svjatoslav/sixth/core/document/content/ListElement.java @@ -7,8 +7,7 @@ import eu.svjatoslav.sixth.core.document.text.FormattedText; import java.util.ArrayList; import java.util.List; -import static eu.svjatoslav.sixth.core.document.Helper.TG_DOCUMENT_PROPERTY; -import static eu.svjatoslav.sixth.core.document.Helper.TG_NORMAL_TEXT; +import static eu.svjatoslav.sixth.core.document.Helper.*; public class ListElement implements Content { public final FormattedText name; @@ -16,6 +15,7 @@ public class ListElement implements Content { public final ListElement parent; private final String type; private final List content = new ArrayList<>(); + StringBuilder normalTextAccumulator = new StringBuilder(); public ListElement(FormattedText name, int indent, ListElement parent, String type) { this.indent = indent; @@ -24,19 +24,52 @@ public class ListElement implements Content { this.parent = parent; } - public void addContent(ListElement content) { + public void addContent(Content content) { + applyTextAccumulator(); this.content.add(content); } + private void applyTextAccumulator(){ + if (normalTextAccumulator.length() == 0) + return; + + content.add(new TextBlock(normalTextAccumulator.toString())); + + normalTextAccumulator.setLength(0); + } + public void parse(TokenizerMatch tm) { if (tm.isGroup(TG_DOCUMENT_PROPERTY)) { -// System.out.println("DOCUMENT PROPERT!!!: " + tm.token); + // TODO + // System.out.println("DOCUMENT PROPERTY!!!: " + tm.token); + return; + } + + if (tm.isGroup(TG_DRAWER_PROPERTY)) { + // TODO + // System.out.println("DOCUMENT PROPERTY!!!: " + tm.token); return; } if (tm.isGroup(TG_NORMAL_TEXT)) { -// System.out.println(" Plain text content: " + tm.token); + normalTextAccumulator.append(tm.token); + return; + } + + if (tm.isGroup(TG_MULTILINE_CODE)){ + // System.out.println(tm.toString()); + String[] groups = tm.getRegExpGroups(); + addContent(new MultilineCode( + groups[3], // language + groups[5] // code + )); + return; + } + + if (tm.isGroup(TG_VERSE)){ + String[] groups = tm.getRegExpGroups(); + addContent(new Verse(groups[5])); return; } @@ -45,6 +78,8 @@ public class ListElement implements Content { public void toMD(StringBuilder sb, int indent) { + applyTextAccumulator(); + if (this.indent >= 0) { String2 s = new String2(); s.append(" ", indent).append(type).append(" ").append(name.toMD(indent + 2)).append("\n");