Parse multiline list headings
[sixth.git] / src / main / java / eu / svjatoslav / sixth / core / document / content / ListElement.java
1 package eu.svjatoslav.sixth.core.document.content;
2
3 import eu.svjatoslav.commons.string.String2;
4 import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch;
5 import eu.svjatoslav.sixth.core.document.text.FormattedText;
6
7 import java.util.ArrayList;
8 import java.util.List;
9
10 import static eu.svjatoslav.sixth.core.document.Helper.TG_DOCUMENT_PROPERTY;
11
12 public class ListElement implements Content {
13     public final FormattedText name;
14     public final int indent;
15     public final ListElement parent;
16     private String type;
17     private final List<Content> content = new ArrayList<>();
18
19     public ListElement(FormattedText name, int indent, ListElement parent, String type) {
20         this.indent = indent;
21         this.name = name;
22         this.parent = parent;
23         this.type = type;
24     }
25
26     public void addContent(ListElement content) {
27         this.content.add(content);
28     }
29
30     public void parse(TokenizerMatch tm) {
31
32         if (tm.isGroup(TG_DOCUMENT_PROPERTY)) {
33 //            System.out.println("DOCUMENT PROPERT!!!: " + tm.token);
34             return;
35         }
36
37         if (tm.isGroup(null)) {
38 //            System.out.println("  Plain text content: " + tm.token);
39             return;
40         }
41
42         System.out.println("ERROR!!!! Unable to handle: " + tm);
43
44     }
45
46
47     public void toMD(StringBuilder sb, int i) {
48         if (indent >= 0){
49             String2 s = new String2();
50             s.addSuffix(" ", indent).addSuffix(type).addSuffix(" ").addSuffix(name.toMD()).addSuffix("\n");
51             sb.append(s.toString());
52         }
53
54         for (Content c : content) {
55             c.toMD(sb, indent + 2);
56         }
57     }
58 }