- try {
- ListElement missingIntermediate = new ListElement(
- fromOrg("<noname>"), currentListElement.level + 1, currentListElement);
- currentListElement.addChild(missingIntermediate);
- currentListElement = missingIntermediate;
- return createListElement(name, targetLevel);
- } catch (InvalidSyntaxException e) {
- throw new IllegalStateException("impossible situation");
+ if (indent == currentListElement.indent){
+ // list depth is the same
+ ListElement newElement = new ListElement(title, indent, currentListElement.parent, type);
+ currentListElement.parent.addContent(newElement);
+ currentListElement = newElement;
+ return;
+ }
+
+ // list dept decreases
+ while (true){
+ if (currentListElement.parent.indent <= indent){
+ if (currentListElement.parent.indent < 0){
+ // reached first depth level, cannot go any deeper.
+ // This special situation arisesbb only when lint indents are not properly aligned.
+ // That is, document structure is incorrect.
+ ListElement newElement = new ListElement(title, indent, currentListElement.parent, type);
+ currentListElement.parent.addContent(newElement);
+ currentListElement = newElement;
+ return;
+ }
+
+ ListElement newElement = new ListElement(title, indent, currentListElement.parent.parent, type);
+ currentListElement.parent.parent.addContent(newElement);
+ currentListElement = newElement;
+ return;
+ }
+ currentListElement = currentListElement.parent;