diff --git a/libraries/docs/website/src/main/apidocs/js/apidoc.js b/libraries/docs/website/src/main/apidocs/js/apidoc.js index 68ba572b349..5f80c922953 100644 --- a/libraries/docs/website/src/main/apidocs/js/apidoc.js +++ b/libraries/docs/website/src/main/apidocs/js/apidoc.js @@ -13,7 +13,7 @@ $(function(){ success: function( xmlResponse ) { var data = $( "search", xmlResponse ).map(function() { return { - value: $( "name", this ).text(), + value: $( "kind", this ).text() + " " + $( "name", this ).text(), id: $( "href", this ).text() }; }).get(); diff --git a/libraries/docs/website/src/main/apidocs/kotlin.css b/libraries/docs/website/src/main/apidocs/kotlin.css index 2368ad98bbe..8c03d9ef53d 100644 --- a/libraries/docs/website/src/main/apidocs/kotlin.css +++ b/libraries/docs/website/src/main/apidocs/kotlin.css @@ -77,7 +77,7 @@ .ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; } .ui-autocomplete { - max-height: 100px; + max-height: 500px; overflow-y: auto; /* prevent horizontal scrollbar */ overflow-x: hidden; @@ -88,9 +88,9 @@ * we use height instead, but this forces the menu to always be this tall */ * html .ui-autocomplete { - height: 100px; + height: 500px; } .NavBarCell1 label { color: white; -} +} \ No newline at end of file diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt index 80780cc4051..6aee4f9da34 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt @@ -691,15 +691,14 @@ class TemplateLinkRenderer(val annotated: KAnnotated, val template: KDocTemplate // TODO really dirty hack alert!!! // until the resolver is working, lets try adding a few prefixes :) - for (prefix in arrayList("java.lang", "java.util", "java.util.regex", "java.io", "jet")) + for (prefix in arrayList("java.lang", "java.util", "java.util.regex", "java.io", "jet")) { if (href == null) { href = resolveClassNameLink(prefix + "." + qualified) + if (href != null) { + break + } } - /** TODO use break when KT-1523 is fixed - if (href != null) { - break } - */ } if (href != null) { answer.href = href @@ -1129,6 +1128,8 @@ class KProperty(val owner: KClassOrPackage, val descriptor: PropertyDescriptor, fun isVar(): Boolean = descriptor.isVar() + fun kind(): String = if (isVar()) "var" else "val" + fun toString() = "property $name" } diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/KDocTemplate.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/KDocTemplate.kt index 8798dae3c07..fde1ad99b78 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/KDocTemplate.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/KDocTemplate.kt @@ -53,6 +53,10 @@ abstract class KDocTemplate() : TextTemplate() { return "${extensionsHref(pkg, c)}#${f.link}" } + open fun extensionsHref(pkg: KPackage, c: KClass, f: KProperty): String { + return "${extensionsHref(pkg, c)}#${f.link}" + } + open fun sourceHref(klass: KClass): String { if (klass.isLinkToSourceRepo()) { return klass.sourceLink() @@ -160,7 +164,7 @@ abstract class KDocTemplate() : TextTemplate() { fun searchBox(): String = """ - + """ diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/SearchXmlTemplate.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/SearchXmlTemplate.kt index 35fc2addf15..a7aee7943c2 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/SearchXmlTemplate.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/SearchXmlTemplate.kt @@ -5,19 +5,66 @@ import org.jetbrains.kotlin.template.* import kotlin.io.* import kotlin.util.* import java.util.* -import org.jetbrains.kotlin.doc.model.KModel +import org.jetbrains.kotlin.doc.model.* + +class SearchXmlTemplate(val model: KModel): KDocTemplate() { + + class Search(val name: String, val href: String, val kind: String) { + fun toString() = "Search($name, $href, $kind)" + } -class SearchXmlTemplate(val model: KModel) : KDocTemplate() { override fun render() { + val map = TreeMap() + + fun add(name: String, href: String, kind: String): Unit { + val search = Search(name, href, kind) + if (!map.containsKey(name)) { + map.put(name, search) + } + } + + fun add(owner: KClass, c: KFunction, href: String): Unit { + add("${c.name}() [${owner.name}]", href, "fun") + } + + fun add(owner: KClass, c: KProperty, href: String): Unit { + add("${c.name} [${owner.name}]", href, c.kind()) + } + + for (c in model.classes) { + add("${c.simpleName} [${c.pkg.name}]", "${c.nameAsPath}.html", c.kind) + + c.functions.forEach{ add(c, it, href(it)) } + c.properties.forEach{ add(c, it, href(it)) } + } + + for (p in model.packages) { + val map = inheritedExtensionFunctions(p.functions) + val pmap = inheritedExtensionProperties(p.properties) + val classes = hashSet() + classes.addAll(map.keySet()) + classes.addAll(pmap.keySet()) + for (c in classes) { + if (c != null) { + val functions = map.get(c).orEmpty() + val properties = pmap.get(c).orEmpty() + + functions.forEach{ add(c, it, p.nameAsPath + "/" + extensionsHref(p, c, it)) } + functions.forEach{ add(c, it, p.nameAsPath + "/" + extensionsHref(p, c, it)) } + } + } + } + println(""" """) - for (c in model.classes) { + for (s in map.values()!!) { println(""" - ${c.nameAsPath}.html - ${c.name} - ${c.kind} + ${s.href} + ${s.name} + ${s.kind} """) } println("""""") } + }