diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 10ac78091..ad70699f1 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -76,6 +76,7 @@ tasks.create("tectonicDocs") { group = "terra" println("Scanning sources...") + val docs = HashMap() val refactor = HashMap() @@ -95,6 +96,16 @@ tasks.create("tectonicDocs") { } } + val children = HashMap>() + sources.forEach { (name, unit) -> + unit.getClassByName(name).ifPresent { declaration -> + declaration.extendedTypes.forEach { classOrInterfaceType -> + val inherit = classOrInterfaceType.name.asString() + if (!children.containsKey(inherit)) children[inherit] = ArrayList() + children[inherit]!!.add(declaration.name) + } + } + } sources.forEach { (name, unit) -> val doc = StringBuilder() doc.append("# ${generify(name, refactor)}\n") @@ -105,9 +116,16 @@ tasks.create("tectonicDocs") { } declaration.extendedTypes.forEach { if (!it.name.asString().equals("AbstractableTemplate")) { - doc.append("Inherits from [${it.name}](./${it.name})\n") + doc.append("Inherits from ${parseType(it, refactor)} \n") } } + if (children.containsKey(name)) { + doc.append("Children: \n") + children[name]!!.forEach { + doc.append("* ${parseTypeLink(it, refactor)}\n") + } + doc.append(" \n\n") + } doc.append("\n") } @@ -149,7 +167,7 @@ tasks.create("tectonicDocs") { } } -fun parseTypeLink(type: Type, refactor: Map): String { +fun parseTypeLink(type: com.github.javaparser.ast.Node, refactor: Map): String { val st = parseType(type, refactor) if (st.contains('<')) { @@ -170,7 +188,7 @@ fun parseTypeLink(type: Type, refactor: Map): String { return "[$st](./$st)" } -fun parseType(type: Type, refactor: Map): String { +fun parseType(type: com.github.javaparser.ast.Node, refactor: Map): String { if (type is PrimitiveType) { return when (type.type) { Primitive.BOOLEAN -> "Boolean" @@ -184,7 +202,7 @@ fun parseType(type: Type, refactor: Map): String { else -> type.asString() } } - return generify(type.asString(), refactor) + return generify(type.toString(), refactor) } fun generify(type: String, refactor: Map): String {