package eu.svjatoslav.sixth.core.document;
+import eu.svjatoslav.sixth.core.document.text.FormattedText;
+
+import static eu.svjatoslav.sixth.core.document.text.FormattedText.fromOrg;
+
public class Document {
+ public final Heading rootHeading = new Heading( fromOrg("<root>") , 0, null);
+
+ private Heading currentHeading = rootHeading;
+
+ public Heading createHeading(FormattedText name, int targetLevel){
+ if (currentHeading.level == (targetLevel - 1)){
+ Heading newHeading = new Heading(name, targetLevel, currentHeading);
+ currentHeading.addChild(newHeading);
+ currentHeading = newHeading;
+ return newHeading;
+ }
+
+ if (currentHeading.level > (targetLevel - 1)){
+ currentHeading = currentHeading.parent;
+ return createHeading(name, targetLevel);
+ }
+
+ Heading missingIntermediate = new Heading(fromOrg("<noname>"), currentHeading.level + 1, currentHeading);
+ currentHeading.addChild(missingIntermediate);
+ currentHeading = missingIntermediate;
+ return createHeading(name, targetLevel);
+ }
}