X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fcore%2Fdocument%2FDocument.java;h=23852845cf06134c1fe57ef58826982c62368e1e;hb=f9ba1a34f75fc8bfe9e6507762947566c8e22bce;hp=2c3d2f61dd5ce84eb614935a8c2d0718f6e25a1d;hpb=7f9e6d11eb956ba3e1df724a21313c6a6bd1eb49;p=sixth.git diff --git a/src/main/java/eu/svjatoslav/sixth/core/document/Document.java b/src/main/java/eu/svjatoslav/sixth/core/document/Document.java index 2c3d2f6..2385284 100644 --- a/src/main/java/eu/svjatoslav/sixth/core/document/Document.java +++ b/src/main/java/eu/svjatoslav/sixth/core/document/Document.java @@ -1,4 +1,30 @@ 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("") , 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(""), currentHeading.level + 1, currentHeading); + currentHeading.addChild(missingIntermediate); + currentHeading = missingIntermediate; + return createHeading(name, targetLevel); + } }