Parse multiline list headings
[sixth.git] / src / main / java / eu / svjatoslav / sixth / core / document / content / ListElement.java
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
new file mode 100644 (file)
index 0000000..c4e4425
--- /dev/null
@@ -0,0 +1,58 @@
+package eu.svjatoslav.sixth.core.document.content;
+
+import eu.svjatoslav.commons.string.String2;
+import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch;
+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;
+
+public class ListElement implements Content {
+    public final FormattedText name;
+    public final int indent;
+    public final ListElement parent;
+    private String type;
+    private final List<Content> content = new ArrayList<>();
+
+    public ListElement(FormattedText name, int indent, ListElement parent, String type) {
+        this.indent = indent;
+        this.name = name;
+        this.parent = parent;
+        this.type = type;
+    }
+
+    public void addContent(ListElement content) {
+        this.content.add(content);
+    }
+
+    public void parse(TokenizerMatch tm) {
+
+        if (tm.isGroup(TG_DOCUMENT_PROPERTY)) {
+//            System.out.println("DOCUMENT PROPERT!!!: " + tm.token);
+            return;
+        }
+
+        if (tm.isGroup(null)) {
+//            System.out.println("  Plain text content: " + tm.token);
+            return;
+        }
+
+        System.out.println("ERROR!!!! Unable to handle: " + tm);
+
+    }
+
+
+    public void toMD(StringBuilder sb, int i) {
+        if (indent >= 0){
+            String2 s = new String2();
+            s.addSuffix(" ", indent).addSuffix(type).addSuffix(" ").addSuffix(name.toMD()).addSuffix("\n");
+            sb.append(s.toString());
+        }
+
+        for (Content c : content) {
+            c.toMD(sb, indent + 2);
+        }
+    }
+}