updated kdoc so it highlights parameters with default values and varargs

This commit is contained in:
James Strachan
2012-03-26 18:40:27 +01:00
parent 051ae66093
commit a0e04dfcd5
3 changed files with 35 additions and 4 deletions
@@ -323,7 +323,7 @@ class KModel(var context: BindingContext, val config: KDocConfig) {
val returnType = getType(descriptor.getReturnType()) val returnType = getType(descriptor.getReturnType())
if (returnType != null) { if (returnType != null) {
val name = descriptor.getName() val name = descriptor.getName()
val answer = KParameter(name, returnType) val answer = KParameter(descriptor, name, returnType)
configureComments(answer, descriptor) configureComments(answer, descriptor)
return answer return answer
} }
@@ -833,10 +833,21 @@ class KProperty(val owner: KClassOrPackage, val descriptor: PropertyDescriptor,
fun toString() = "property $name" fun toString() = "property $name"
} }
class KParameter(val name: String, class KParameter(val descriptor: ValueParameterDescriptor, val name: String,
var aType: KType): KAnnotated(aType.model, aType.declarationDescriptor) { var aType: KType): KAnnotated(aType.model, aType.declarationDescriptor) {
fun toString() = "$name: ${aType.name}" fun toString() = "$name: ${aType.name}"
fun isVarArg(): Boolean = descriptor.getVarargElementType() != null
fun hasDefaultValue(): Boolean = descriptor.hasDefaultValue()
fun varArgType(): KType? {
val varType = descriptor.getVarargElementType()
return if (varType != null) {
aType.model.getType(varType)
} else null
}
} }
class KTypeParameter(val name: String, class KTypeParameter(val name: String,
@@ -43,6 +43,8 @@ from package ${link(pkg)}
""") """)
} }
override fun href(f: KFunction): String = if (f.extensionClass == klass) "#${f.link}" else super.href(f) override fun href(f: KFunction): String {
return if (f.extensionClass != null) "#${f.link}" else super.href(f)
}
} }
@@ -219,10 +219,28 @@ abstract class PackageTemplateSupport(open val pkg: KPackage) : KDocTemplate() {
fun printParameters(method: KFunction): Unit { fun printParameters(method: KFunction): Unit {
print("(") print("(")
var first = true var first = true
var defaultValue = false
for (p in method.parameters) { for (p in method.parameters) {
if (!p.hasDefaultValue() && defaultValue) {
print("]")
defaultValue = false
}
if (first) first = false else print(", ") if (first) first = false else print(", ")
if (p.hasDefaultValue() && !defaultValue) {
print(" [")
defaultValue = true
}
val pType = if (p.isVarArg()) {
print("vararg ")
p.varArgType().sure()
} else {
p.aType
}
print("${p.name}: ") print("${p.name}: ")
print(link(p.aType)) print(link(pType))
}
if (defaultValue) {
print("]")
} }
print(")") print(")")
} }