mostly working children list

This commit is contained in:
dfsek
2021-04-26 22:10:53 -07:00
parent 29cc8e9ffb
commit 951270c147
+22 -4
View File
@@ -76,6 +76,7 @@ tasks.create<SourceTask>("tectonicDocs") {
group = "terra" group = "terra"
println("Scanning sources...") println("Scanning sources...")
val docs = HashMap<String, String>() val docs = HashMap<String, String>()
val refactor = HashMap<String, String>() val refactor = HashMap<String, String>()
@@ -95,6 +96,16 @@ tasks.create<SourceTask>("tectonicDocs") {
} }
} }
val children = HashMap<String, MutableList<com.github.javaparser.ast.Node>>()
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) -> sources.forEach { (name, unit) ->
val doc = StringBuilder() val doc = StringBuilder()
doc.append("# ${generify(name, refactor)}\n") doc.append("# ${generify(name, refactor)}\n")
@@ -105,9 +116,16 @@ tasks.create<SourceTask>("tectonicDocs") {
} }
declaration.extendedTypes.forEach { declaration.extendedTypes.forEach {
if (!it.name.asString().equals("AbstractableTemplate")) { 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") doc.append("\n")
} }
@@ -149,7 +167,7 @@ tasks.create<SourceTask>("tectonicDocs") {
} }
} }
fun parseTypeLink(type: Type, refactor: Map<String, String>): String { fun parseTypeLink(type: com.github.javaparser.ast.Node, refactor: Map<String, String>): String {
val st = parseType(type, refactor) val st = parseType(type, refactor)
if (st.contains('<')) { if (st.contains('<')) {
@@ -170,7 +188,7 @@ fun parseTypeLink(type: Type, refactor: Map<String, String>): String {
return "[$st](./$st)" return "[$st](./$st)"
} }
fun parseType(type: Type, refactor: Map<String, String>): String { fun parseType(type: com.github.javaparser.ast.Node, refactor: Map<String, String>): String {
if (type is PrimitiveType) { if (type is PrimitiveType) {
return when (type.type) { return when (type.type) {
Primitive.BOOLEAN -> "Boolean" Primitive.BOOLEAN -> "Boolean"
@@ -184,7 +202,7 @@ fun parseType(type: Type, refactor: Map<String, String>): String {
else -> type.asString() else -> type.asString()
} }
} }
return generify(type.asString(), refactor) return generify(type.toString(), refactor)
} }
fun generify(type: String, refactor: Map<String, String>): String { fun generify(type: String, refactor: Map<String, String>): String {