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=0000000000000000000000000000000000000000;hp=5cfc79118b54793229d1c683da3578b7d7251405;hb=c91e7d20d9ebd423eae87eb89cc6b69caf1cb8de;hpb=168cf05300cec2bb4c0607711b752609976b2901 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 deleted file mode 100644 index 5cfc791..0000000 --- a/src/main/java/eu/svjatoslav/sixth/core/document/content/ListElement.java +++ /dev/null @@ -1,163 +0,0 @@ -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.*; -import static eu.svjatoslav.sixth.core.document.Utils.isBlank; -import static eu.svjatoslav.sixth.core.document.Utils.removePrefix; - -public class ListElement implements Content { - StringBuilder nameInOrg = new StringBuilder(); - public final int indent; - public final ListElement parent; - private final String type; - private final List content = new ArrayList<>(); - - public ListElement(String nameInOrg, int indent, ListElement parent, String type) { - this.indent = indent; - this.nameInOrg.append(nameInOrg); - this.type = type; - this.parent = parent; - } - - private Content findCurrentContentElement(){ - if (content.isEmpty()) return null; - return content.get(content.size()-1); - } - - private boolean isLastContentElement(Class aClass){ - Content contentElement = findCurrentContentElement(); - if (contentElement == null) return false; - - return aClass.isInstance(contentElement); - } - - public void addContent(Content contentElement){ - content.add(contentElement); - } - - public void parse(TokenizerMatch tm) { - - if (tm.isGroup(TG_DOCUMENT_PROPERTY)) { - parseDocumentProperty(tm); - return; - } - - if (tm.isGroup(TG_DRAWER_PROPERTY)) { - // TODO - // System.out.println("DOCUMENT PROPERTY!!!: " + tm.token); - return; - } - - if (tm.isGroup(TG_NORMAL_TEXT)) { - if (isBlank(tm.token)){ - parseSeparator(); - return; - } - - parseTextBlock(tm); - return; - } - - if (tm.isGroup(TG_MULTILINE_CODE)){ - // System.out.println(tm.toString()); - String[] groups = tm.getRegExpGroups(); - content.add(new MultilineCode( - groups[3], // language - groups[5] // code - )); - return; - } - - if (tm.isGroup(TG_VERSE)){ - String[] groups = tm.getRegExpGroups(); - content.add(new Verse(groups[5])); - return; - } - - System.out.println("ERROR!!!! Unable to handle: " + tm); - } - - private void parseTextBlock(TokenizerMatch tm) { - TextBlock textBlock; - if (isLastContentElement(TextBlock.class)) { - textBlock = ((TextBlock) findCurrentContentElement()); - } if (content.isEmpty()){ - // list title continuation - nameInOrg.append("\n").append(removePrefix(tm.token, indent + 2)); - return; - } else { - textBlock = new TextBlock(); - content.add(textBlock); - } - - textBlock.addContent(tm.token); - } - - private void parseDocumentProperty(TokenizerMatch tm) { - DocumentPropertyCollection documentPropertyCollection; - - if (isLastContentElement(DocumentPropertyCollection.class)){ - documentPropertyCollection = (DocumentPropertyCollection)findCurrentContentElement(); - } else { - documentPropertyCollection = new DocumentPropertyCollection(); - content.add(documentPropertyCollection); - } - - documentPropertyCollection.addProperty( - tm.getRegExpGroups()[0], - tm.getRegExpGroups()[1]); - } - - private void parseSeparator() { - if (isLastContentElement(Separator.class)){ - ((Separator)findCurrentContentElement()).addLine(); - } else { - content.add(new Separator()); - } - } - - - public void toMD(StringBuilder sb, int indent) { - disablePlantUmlExport(); - - if (this.indent >= 0) { - String2 s = new String2(); - s.append(" ", indent).append(type).append(" ").append(getName().toMD(indent + 2)).append("\n"); - sb.append(s.toString()); - } - - for (Content c : content) { - c.toMD(sb, this.indent + 2); - } - } - - private FormattedText getName(){ - return FormattedText.fromOrg(nameInOrg.toString()); - } - - private void disablePlantUmlExport() { - - for (int i = 0; i< (content.size()-2); i++){ - if (!(content.get(i) instanceof MultilineCode)) continue; - - MultilineCode code = (MultilineCode) content.get(i); - if (!"plantuml".equalsIgnoreCase(code.language)) continue; - - if (!(content.get(i+1) instanceof DocumentPropertyCollection)) continue; - DocumentPropertyCollection property = (DocumentPropertyCollection) content.get(i+1); - - if (!property.hasProperty("results")) continue; - - if (!(content.get(i+2) instanceof TextBlock)) continue; - TextBlock textBlock = (TextBlock) content.get(i+2); - - textBlock.disableForExport(); - } - } -}