added support for public properties at the package level to kdoc

This commit is contained in:
James Strachan
2012-06-12 16:14:56 +01:00
parent a55c8f1a04
commit 74a138212e
4 changed files with 35 additions and 1 deletions
@@ -1018,6 +1018,8 @@ class KPackage(model: KModel, val descriptor: NamespaceDescriptor,
}
fun packageFunctions() = functions.filter{ it.extensionClass == null }
fun packageProperties() = properties.filter{ it.extensionClass == null && it.isPublic() }
}
class KType(val jetType: JetType, model: KModel, val klass: KClass?, val arguments: List<KType> = ArrayList<KType>())
@@ -1175,6 +1177,11 @@ class KProperty(val owner: KClassOrPackage, val descriptor: PropertyDescriptor,
fun kind(): String = if (isVar()) "var" else "val"
fun isPublic(): Boolean {
val visibility = descriptor.getVisibility()
return visibility.isPublicAPI()
}
fun toString() = "property $name"
}
@@ -36,6 +36,13 @@ abstract class KDocTemplate() : TextTemplate() {
}
}
/**
* Generates a link to a package level property
*/
open fun href(pkg: KPackage, p: KProperty): String {
return "${href(pkg)}#${p.link}"
}
open fun href(f: KProperty): String {
return if (f.owner is KClass) {
"${href(f.owner)}#${f.link}"
@@ -38,6 +38,7 @@ ${stylesheets()}
printClasses("enum", "Enums")
printClasses("annotation", "Annotations")
printClasses("exception", "Exceptions")
printPackageProperties()
printFunctions()
printExtensionFunctions()
@@ -104,6 +105,24 @@ ${stylesheets()}
}
}
println("""</TR>
</TABLE>""")
}
}
protected fun printPackageProperties(): Unit {
val list = pkg.packageProperties()
if (list.notEmpty()) {
println("""<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
<TR>
<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">Properties</FONT>&nbsp;
<FONT CLASS="FrameItemFont">
<BR>""")
for (c in list) {
if (c != null) {
println("""<A HREF="${href(pkg, c)}" title="property from ${pkg.name}" target="classFrame"><I>${c.name}</I></A>
<BR>""")
}
}
println("""</TR>
</TABLE>""")
}
}
@@ -121,8 +121,9 @@ ${pkg.description(this)}
printClasses("annotation", "Annotations")
printClasses("exception", "Exceptions")
printPropertySummary(pkg.packageProperties())
printFunctionSummary(pkg.packageFunctions())
//printFunctions()
printExtensionFunctions()
println("""<A NAME="package_description"><!-- --></A><H2>