aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorMarcin Aman <marcin.aman@gmail.com>2020-07-07 15:45:32 +0200
committerGitHub <noreply@github.com>2020-07-07 15:45:32 +0200
commit63823e14794136c23359aab9f40b8d8dcfe504dd (patch)
treef65f3aee6e6d4086bd217387116261a14de5a6cb /plugins
parent6c1403cd8ffab5e13f12a2744846a70b31710b09 (diff)
downloaddokka-63823e14794136c23359aab9f40b8d8dcfe504dd.tar.gz
dokka-63823e14794136c23359aab9f40b8d8dcfe504dd.tar.bz2
dokka-63823e14794136c23359aab9f40b8d8dcfe504dd.zip
Javadoc signature provider (#1041)
Javadoc signature provider #1025
Diffstat (limited to 'plugins')
-rw-r--r--plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt3
-rw-r--r--plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt15
-rw-r--r--plugins/javadoc/src/main/kotlin/javadoc/JavadocPageCreator.kt94
-rw-r--r--plugins/javadoc/src/main/kotlin/javadoc/JavadocPlugin.kt24
-rw-r--r--plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocContentNodes.kt18
-rw-r--r--plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocPageNodes.kt36
-rw-r--r--plugins/javadoc/src/main/kotlin/javadoc/pages/htmlGeneration.kt391
-rw-r--r--plugins/javadoc/src/main/kotlin/javadoc/renderer/JavadocContentToHtmlTranslator.kt15
-rw-r--r--plugins/javadoc/src/main/kotlin/javadoc/renderer/JavadocContentToTemplateMapTranslator.kt54
-rw-r--r--plugins/javadoc/src/main/kotlin/javadoc/signatures/JavadocSignatureProvider.kt196
-rw-r--r--plugins/javadoc/src/main/kotlin/javadoc/translators/documentables/JavadocPageContentBuilder.kt80
-rw-r--r--plugins/javadoc/src/main/resources/views/class.korte30
-rw-r--r--plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt2
-rw-r--r--plugins/javadoc/src/test/kotlin/javadoc/JavadocClasslikeTemplateMapTest.kt239
-rw-r--r--plugins/javadoc/src/test/kotlin/javadoc/location/JavadocLocationTest.kt4
15 files changed, 669 insertions, 532 deletions
diff --git a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
index 2a242948..689f6db5 100644
--- a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
+++ b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
@@ -21,9 +21,6 @@ interface JvmSignatureUtils {
fun <T : Documentable> WithExtraProperties<T>.annotations(): SourceSetDependent<List<Annotations.Annotation>> =
extra[Annotations]?.content ?: emptyMap()
- private fun Annotations.Annotation.toSignatureString(): String =
- "@" + this.dri.classNames + "(" + this.params.entries.joinToString { it.key + "=" + it.value } + ")"
-
private fun PageContentBuilder.DocumentableContentBuilder.annotations(
d: Documentable,
ignored: Set<Annotations.Annotation>,
diff --git a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
index 5a55e3ec..5e03be6e 100644
--- a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
+++ b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
@@ -317,10 +317,15 @@ class DefaultPsiToDocumentableTranslator(
is PsiClassReferenceType -> {
val resolved: PsiClass = type.resolve()
?: return UnresolvedBound(type.presentableText)
- if (resolved.qualifiedName == "java.lang.Object") {
- JavaObject
- } else {
- TypeConstructor(DRI.from(resolved), type.parameters.map { getProjection(it) })
+ when {
+ resolved.qualifiedName == "java.lang.Object" -> JavaObject
+ resolved is PsiTypeParameter && resolved.owner != null ->
+ OtherParameter(
+ declarationDRI = DRI.from(resolved.owner!!),
+ name = resolved.name.orEmpty()
+ )
+ else ->
+ TypeConstructor(DRI.from(resolved), type.parameters.map { getProjection(it) })
}
}
is PsiArrayType -> TypeConstructor(
@@ -443,7 +448,7 @@ class DefaultPsiToDocumentableTranslator(
attributes.filter { it !is KtLightAbstractAnnotation }.mapNotNull { it.attributeName to it.toValue() }
.toMap(),
(psiElement as PsiClass).annotations.any {
- hasQualifiedName("java.lang.annotation.Documented")
+ it.hasQualifiedName("java.lang.annotation.Documented")
}
)
}
diff --git a/plugins/javadoc/src/main/kotlin/javadoc/JavadocPageCreator.kt b/plugins/javadoc/src/main/kotlin/javadoc/JavadocPageCreator.kt
index ebe223e5..1bafa111 100644
--- a/plugins/javadoc/src/main/kotlin/javadoc/JavadocPageCreator.kt
+++ b/plugins/javadoc/src/main/kotlin/javadoc/JavadocPageCreator.kt
@@ -9,13 +9,12 @@ import org.jetbrains.dokka.base.transformers.pages.comments.CommentsToContentCon
import org.jetbrains.dokka.base.transformers.pages.comments.DocTagToContentConverter
import org.jetbrains.dokka.model.*
import org.jetbrains.dokka.model.doc.Description
+import org.jetbrains.dokka.model.doc.NamedTagWrapper
+import org.jetbrains.dokka.model.doc.Param
import org.jetbrains.dokka.model.doc.TagWrapper
import org.jetbrains.dokka.model.properties.PropertyContainer
import org.jetbrains.dokka.model.properties.WithExtraProperties
-import org.jetbrains.dokka.pages.ContentKind
-import org.jetbrains.dokka.pages.ContentNode
-import org.jetbrains.dokka.pages.ContentText
-import org.jetbrains.dokka.pages.DCI
+import org.jetbrains.dokka.pages.*
import org.jetbrains.dokka.utilities.DokkaLogger
open class JavadocPageCreator(
@@ -43,20 +42,20 @@ open class JavadocPageCreator(
name = c.name.orEmpty(),
content = contentForClasslike(c),
dri = setOf(c.dri),
- modifiers = listOfNotNull(c.visibility[jvm]?.name),
- signature = signatureProvider.signature(c).nodeForJvm(jvm),
+ signature = signatureForNode(c, jvm),
description = c.descriptionToContentNodes(),
constructors = (c as? WithConstructors)?.constructors?.mapNotNull { it.toJavadocFunction() }.orEmpty(),
methods = c.functions.mapNotNull { it.toJavadocFunction() },
entries = (c as? DEnum)?.entries?.map {
JavadocEntryNode(
- signatureProvider.signature(it).nodeForJvm(jvm), it.descriptionToContentNodes(jvm)
+ signatureForNode(it, jvm),
+ it.descriptionToContentNodes(jvm)
)
}.orEmpty(),
classlikes = c.classlikes.mapNotNull { pageForClasslike(it) },
properties = c.properties.map {
JavadocPropertyNode(
- signatureProvider.signature(it).nodeForJvm(jvm),
+ signatureForNode(it, jvm),
it.descriptionToContentNodes(jvm)
)
},
@@ -71,7 +70,7 @@ open class JavadocPageCreator(
JavadocContentKind.OverviewSummary,
m.jvmSourceSets.toSet()
) {
- title(m.name, m.brief(),"0.0.1", dri = setOf(m.dri), kind = ContentKind.Main)
+ title(m.name, m.brief(), "0.0.1", dri = setOf(m.dri), kind = ContentKind.Main)
list("Packages", "Package", setOf(m.dri), ContentKind.Packages, m.packages.sortedBy { it.name }.map { p ->
RowJavadocListEntry(
LinkJavadocListEntry(p.name, setOf(p.dri), JavadocContentKind.PackageSummary, sourceSets),
@@ -111,42 +110,21 @@ open class JavadocPageCreator(
)
}
- private fun signatureForProjection(p: Projection): String =
- when (p) {
- is OtherParameter -> p.name
- is TypeConstructor -> if (p.function)
- "TODO"
- else {
- val other = if (p.projections.isNotEmpty()) {
- p.projections.joinToString(prefix = "<", postfix = ">") { signatureForProjection(it) }
- } else {
- ""
- }
- "${p.dri.classNames.orEmpty()} $other"
- }
-
- is Variance -> "${p.kind} ${signatureForProjection(p.inner)}"
- is Star -> "*"
- is Nullable -> "${signatureForProjection(p.inner)}?"
- is JavaObject -> "Object"
- is Void -> "Void"
- is PrimitiveJavaType -> p.name
- is Dynamic -> "dynamic"
- is UnresolvedBound -> p.name
- }
-
private fun DFunction.toJavadocFunction() = highestJvmSourceSet?.let { jvm ->
JavadocFunctionNode(
name = name,
dri = dri,
- signature = signatureProvider.signature(this).nodeForJvm(jvm),
+ signature = signatureForNode(this, jvm),
brief = brief(jvm),
- parameters = parameters.map {
- JavadocParameterNode(
- name = it.name.orEmpty(),
- type = signatureForProjection(it.type),
- description = it.brief()
- )
+ parameters = parameters.mapNotNull {
+ val signature = signatureForNode(it, jvm)
+ signature.modifiers?.let { type ->
+ JavadocParameterNode(
+ name = it.name.orEmpty(),
+ type = type,
+ description = it.brief()
+ )
+ }
},
extras = extra
)
@@ -165,19 +143,28 @@ open class JavadocPageCreator(
private inline fun <reified T : TagWrapper> Documentable.findNodeInDocumentation(sourceSetData: DokkaSourceSet?): T? =
documentation[sourceSetData]?.firstChildOfTypeOrNull<T>()
- private fun Documentable.descriptionToContentNodes(sourceSet: DokkaSourceSet? = highestJvmSourceSet) = findNodeInDocumentation<Description>(sourceSet)?.let {
- DocTagToContentConverter.buildContent(
- it.root,
- DCI(setOf(dri), JavadocContentKind.OverviewSummary),
- sourceSets.toSet()
- )
- }.orEmpty()
+ private fun Documentable.descriptionToContentNodes(sourceSet: DokkaSourceSet? = highestJvmSourceSet) =
+ contentNodesFromType<Description>(sourceSet)
+
+ private fun DParameter.paramsToContentNodes(sourceSet: DokkaSourceSet? = highestJvmSourceSet) =
+ contentNodesFromType<Param>(sourceSet)
+
+ private inline fun <reified T : TagWrapper> Documentable.contentNodesFromType(sourceSet: DokkaSourceSet?) =
+ findNodeInDocumentation<T>(sourceSet)?.let {
+ DocTagToContentConverter.buildContent(
+ it.root,
+ DCI(setOf(dri), JavadocContentKind.OverviewSummary),
+ sourceSets.toSet()
+ )
+ }.orEmpty()
fun List<ContentNode>.nodeForJvm(jvm: DokkaSourceSet): ContentNode =
first { it.sourceSets.contains(jvm) }
- private fun Documentable.brief(sourceSet: DokkaSourceSet? = highestJvmSourceSet): List<ContentNode> {
- val description = descriptionToContentNodes(sourceSet)
+ private fun Documentable.brief(sourceSet: DokkaSourceSet? = highestJvmSourceSet): List<ContentNode> =
+ briefFromContentNodes(descriptionToContentNodes(sourceSet))
+
+ private fun briefFromContentNodes(description: List<ContentNode>): List<ContentNode> {
val contents = mutableListOf<ContentNode>()
for (node in description) {
if (node is ContentText && firstSentenceRegex.containsMatchIn(node.text)) {
@@ -189,5 +176,14 @@ open class JavadocPageCreator(
}
return contents
}
+
+ private fun DParameter.brief(sourceSet: DokkaSourceSet? = highestJvmSourceSet): List<ContentNode> =
+ briefFromContentNodes(paramsToContentNodes(sourceSet).dropWhile { it is ContentDRILink })
+
+ private fun ContentNode.asJavadocNode(): JavadocSignatureContentNode =
+ (this as ContentGroup).firstChildOfTypeOrNull<JavadocSignatureContentNode>() ?: throw IllegalStateException("No content for javadoc signature found")
+
+ private fun signatureForNode(documentable: Documentable, sourceSet: DokkaSourceSet): JavadocSignatureContentNode =
+ signatureProvider.signature(documentable).nodeForJvm(sourceSet).asJavadocNode()
}
diff --git a/plugins/javadoc/src/main/kotlin/javadoc/JavadocPlugin.kt b/plugins/javadoc/src/main/kotlin/javadoc/JavadocPlugin.kt
index 7b4aa64d..1a14e97e 100644
--- a/plugins/javadoc/src/main/kotlin/javadoc/JavadocPlugin.kt
+++ b/plugins/javadoc/src/main/kotlin/javadoc/JavadocPlugin.kt
@@ -3,21 +3,24 @@ package org.jetbrains.dokka.javadoc
import javadoc.JavadocDocumentableToPageTranslator
import javadoc.location.JavadocLocationProviderFactory
import javadoc.renderer.KorteJavadocRenderer
+import javadoc.signatures.JavadocSignatureProvider
import org.jetbrains.dokka.CoreExtensions
import org.jetbrains.dokka.base.DokkaBase
+import org.jetbrains.dokka.kotlinAsJava.KotlinAsJavaPlugin
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.querySingle
class JavadocPlugin : DokkaPlugin() {
val dokkaBasePlugin by lazy { plugin<DokkaBase>() }
+ val kotinAsJavaPlugin by lazy { plugin<KotlinAsJavaPlugin>() }
val locationProviderFactory by extensionPoint<JavadocLocationProviderFactory>()
val dokkaJavadocPlugin by extending {
(CoreExtensions.renderer
providing { ctx -> KorteJavadocRenderer(dokkaBasePlugin.querySingle { outputWriter }, ctx, "views") }
- applyIf { format == "javadoc" }
+ applyIf { format == javadocFormat }
override dokkaBasePlugin.htmlRenderer)
}
@@ -28,13 +31,28 @@ class JavadocPlugin : DokkaPlugin() {
dokkaBasePlugin.querySingle { signatureProvider },
context.logger
)
- } override dokkaBasePlugin.documentableToPageTranslator
+ } override dokkaBasePlugin.documentableToPageTranslator applyIf { format == javadocFormat }
}
val javadocLocationProviderFactory by extending {
locationProviderFactory providing { context ->
JavadocLocationProviderFactory(context)
- }
+ } applyIf { format == javadocFormat }
+ }
+
+ val javadocSignatureProvider by extending {
+ val dokkaBasePlugin = plugin<DokkaBase>()
+ dokkaBasePlugin.signatureProvider providing { ctx ->
+ JavadocSignatureProvider(
+ ctx.single(
+ dokkaBasePlugin.commentsToContentConverter
+ ), ctx.logger
+ )
+ } override kotinAsJavaPlugin.javaSignatureProvider applyIf { format == javadocFormat }
+ }
+
+ companion object {
+ private val javadocFormat = "javadoc"
}
}
diff --git a/plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocContentNodes.kt b/plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocContentNodes.kt
index c8593498..5e24ce9e 100644
--- a/plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocContentNodes.kt
+++ b/plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocContentNodes.kt
@@ -86,13 +86,6 @@ fun JavaContentGroupBuilder.title(
list.add(TitleNode(title, subtitle, version, parent, dri, kind, sourceSets))
}
-data class TextNode(
- val text: String,
- override val sourceSets: Set<DokkaSourceSet>
-) : JavadocContentNode(emptySet(), ContentKind.Main, sourceSets) {
- override fun hasAnyContent(): Boolean = !text.isBlank()
-}
-
class ListNode(
val tabTitle: String,
val colTitle: String,
@@ -137,3 +130,14 @@ class LinkJavadocListEntry(
data class RowJavadocListEntry(val link: LinkJavadocListEntry, val doc: List<ContentNode>) : JavadocListEntry {
override val stringTag: String = ""
}
+
+data class JavadocSignatureContentNode(
+ val dri: DRI,
+ val kind: Kind = ContentKind.Symbol,
+ val annotations: ContentNode?,
+ val modifiers: ContentNode?,
+ val signatureWithoutModifiers: ContentNode,
+ val supertypes: ContentNode?
+): JavadocContentNode(setOf(dri), kind, signatureWithoutModifiers.sourceSets) {
+ override fun hasAnyContent(): Boolean = true
+}
diff --git a/plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocPageNodes.kt b/plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocPageNodes.kt
index 24e481e8..02e4b2d6 100644
--- a/plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocPageNodes.kt
+++ b/plugins/javadoc/src/main/kotlin/javadoc/pages/JavadocPageNodes.kt
@@ -26,8 +26,6 @@ class JavadocModulePageNode(
RootPageNode(),
JavadocPageNode {
- val version: String = "0.0.1"
-
override val documentable: Documentable? = null
override val embeddedResources: List<String> = emptyList()
override fun modified(name: String, children: List<PageNode>): RootPageNode =
@@ -82,44 +80,35 @@ class JavadocPackagePageNode(
}
data class JavadocEntryNode(
- val signature: ContentNode,
+ val signature: JavadocSignatureContentNode,
val brief: List<ContentNode>
)
data class JavadocParameterNode(
val name: String,
- val type: String,
+ val type: ContentNode,
val description: List<ContentNode>
)
data class JavadocPropertyNode(
- val signature: ContentNode,
+ val signature: JavadocSignatureContentNode,
val brief: List<ContentNode>
-) {
- val modifiersAndSignature: Pair<ContentNode, ContentNode>
- get() = (signature as ContentGroup).splitSignatureIntoModifiersAndName()
-}
+)
data class JavadocFunctionNode(
- val signature: ContentNode,
+ val signature: JavadocSignatureContentNode,
val brief: List<ContentNode>,
val parameters: List<JavadocParameterNode>,
val name: String,
val dri: DRI,
val extras: PropertyContainer<DFunction> = PropertyContainer.empty()
-) {
-
- val modifiersAndSignature: Pair<ContentNode, ContentNode>
- get() = (signature as ContentGroup).splitSignatureIntoModifiersAndName()
-
-}
+)
class JavadocClasslikePageNode(
override val name: String,
override val content: JavadocContentNode,
override val dri: Set<DRI>,
- val modifiers: List<String>,
- val signature: ContentNode,
+ val signature: JavadocSignatureContentNode,
val description: List<ContentNode>,
val constructors: List<JavadocFunctionNode>,
val methods: List<JavadocFunctionNode>,
@@ -142,7 +131,6 @@ class JavadocClasslikePageNode(
name,
content,
dri,
- modifiers,
signature,
description,
constructors,
@@ -167,7 +155,6 @@ class JavadocClasslikePageNode(
name,
content as JavadocContentNode,
dri,
- modifiers,
signature,
description,
constructors,
@@ -413,15 +400,6 @@ class TreeViewPage(
}
}
-private fun ContentGroup.splitSignatureIntoModifiersAndName(): Pair<ContentNode, ContentNode> {
- val signature = children.firstIsInstance<ContentGroup>()
- val modifiers = signature.children.takeWhile { it !is ContentLink }
- return Pair(
- signature.copy(children = modifiers),
- signature.copy(children = signature.children.drop(modifiers.size))
- )
-}
-
private fun Documentable.kind(): String? =
when (this) {
is DClass -> "class"
diff --git a/plugins/javadoc/src/main/kotlin/javadoc/pages/htmlGeneration.kt b/plugins/javadoc/src/main/kotlin/javadoc/pages/htmlGeneration.kt
deleted file mode 100644
index 98aa2344..00000000
--- a/plugins/javadoc/src/main/kotlin/javadoc/pages/htmlGeneration.kt
+++ /dev/null
@@ -1,391 +0,0 @@
-package javadoc.pages
-
-import kotlinx.html.html
-import kotlinx.html.stream.createHTML
-import org.jetbrains.dokka.pages.ClasslikePageNode
-import org.jetbrains.dokka.pages.ModulePageNode
-import org.jetbrains.dokka.pages.PackagePageNode
-import org.jetbrains.dokka.pages.PageNode
-import java.time.LocalDate
-
-class NavbarGenerator(val page: PageNode) {
- val activeClass = "navBarCell1Rev"
- fun pathToRoot() = "???" // TODO
- val navItems = listOf("Overview", "Package", "Class", "Tree", "Deprecated", "Index", "Help")
-
- // private fun items = navItems.map {itemLink}
-// fun navItemLink()
- val x = createHTML().html {}
-
- private fun navList(content: String) = """<ul class="navList" title="Navigation">
- $content
- </ul>
- """.trimIndent()
-
-// private fun navList(): String {
-// when (page) {
-// is PackagePageNode ->
-// }
-// """
-//<li><a href="../index.html">Overview</a></li>
-//<li><a href="package-summary.html">Package</a></li>
-//<li class="navBarCell1Rev">Class</li>
-//"""
-// val classItem = if (page is ClasslikePageNode) {
-// "Class".wrapInTag("li", mapOf("class" to activeClass))
-// }
-// val treeItem = if (page is ModulePageNode) {
-// "<li><a href=\"overview-tree.html\">Tree</a></li>\n"
-// } else {
-// "<li><a href=\"package-tree.html\">Tree</a></li>\n"
-// }
-//
-// val navListEnd = """
-//<li><a href="${pathToRoot()}deprecated-list.html">Deprecated</a></li>
-//<li><a href="${pathToRoot()}index-all.html">Index</a></li>
-//<li><a href="${pathToRoot()}help-doc.html">Help</a></li>
-//""".trimIndent()
-// }
-
- private fun bottomNavbar(page: PageNode): String =
- """
- |<nav role="navigation">
- |<!-- ======= START OF BOTTOM NAVBAR ====== -->
- |<div class="bottomNav"><a id="navbar.bottom">
- |<!-- -->
- |</a>
- |<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
- |<a id="navbar.bottom.firstrow">
- |<!-- -->
- |</a>
- ${navList("????")}
- |</div>
- |<div class="subNav">
- |<div>
- |<ul class="subNavList">
- |<li>Summary:&nbsp;</li>
- |<li>Nested&nbsp;|&nbsp;</li>
- |<li>Field&nbsp;|&nbsp;</li>
- |<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
- |<li><a href="#method.summary">Method</a></li>
- |</ul>
- |<ul class="subNavList">
- |<li>Detail:&nbsp;</li>
- |<li>Field&nbsp;|&nbsp;</li>
- |<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
- |<li><a href="#method.detail">Method</a></li>
- |</ul>
- |</div>
- |</div>
- |<a id="skip.navbar.bottom">
- |<!-- -->
- |</a>
- |<!-- ======== END OF BOTTOM NAVBAR ======= -->
- |</nav>"""
-}
-
-internal fun pageStart(title: String, version: String, documentTitle: String, pathToRoot: String) = """
- |<!DOCTYPE HTML>
- |<!-- NewPage -->
- |<html lang="en">
- |<head>
- |<title>$documentTitle ($title $version API)</title>
- |<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- |<meta name="dc.created" content="${LocalDate.now()}">
- |<link rel="stylesheet" type="text/css" href="${pathToRoot}stylesheet.css" title="Style">
- |<link rel="stylesheet" type="text/css" href="${pathToRoot}jquery/jquery-ui.css" title="Style">
- |<script type="text/javascript" src="${pathToRoot}script.js"></script>
- |<script type="text/javascript" src="${pathToRoot}jquery/jszip/dist/jszip.min.js"></script>
- |<script type="text/javascript" src="${pathToRoot}jquery/jszip-utils/dist/jszip-utils.min.js"></script>
- |<!--[if IE]>
- |<script type="text/javascript" src="${pathToRoot}jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
- |<![endif]-->
- |<script type="text/javascript" src="${pathToRoot}jquery/jquery-$jQueryVersion.js"></script>
- |<script type="text/javascript" src="${pathToRoot}jquery/jquery-migrate-$jQueryMigrateVersion.js"></script>
- |<script type="text/javascript" src="${pathToRoot}jquery/jquery-ui.js"></script>
- |</head>
- |<body>
- |<script type="text/javascript"><!--
- | try {
- | if (location.href.indexOf('is-external=true') == -1) {
- | parent.document.title="$documentTitle ($title $version API)";
- | }
- | }
- | catch(err) {
- | }
- |//-->
- |var pathtoroot = "$pathToRoot";
- |var useModuleDirectories = true;
- |loadScripts(document, 'script');</script>
- |<noscript>
- |<div>JavaScript is disabled on your browser.</div>
- |</noscript>
- |<header role="banner">
- |<nav role="navigation">
- |<div class="fixedNav">""".trimMargin("|")
-
-internal fun topNavbar(page: PageNode, pathToRoot: String): String = """
- |<!-- ========= START OF TOP NAVBAR ======= -->
- |<div class="topNav"><a id="navbar.top">
- |<!-- -->
- |</a>
- |<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
- |<a id="navbar.top.firstrow">
- |<!-- -->
- |</a>
- |<ul class="navList" title="Navigation">
- ${/*if ((page is JavadocPageNode) && page.pageType == PageType.Class)
- "<li><a href=\"${pathToRoot}index.html\">Overview</a></li>"
- else if (page is RootIndexPage)
- "<li class=\"navBarCell1Rev\">Overview</li>"
- else
- "<li><a href=\"package-summary.html\">Package</a></li>\n"}
- ${if ((page is JavadocPageNode) && page.pageType == PageType.Package)
- "<li class=\"navBarCell1Rev\">Package</li>"
- else
- "<li>Package</li>"*/ ""}
- |<li navBarCell1Rev>Class</li>
- |<li><a href="overview-tree.html">Tree</a></li>
- |<li><a href="${pathToRoot}deprecated-list.html">Deprecated</a></li>
- |<li><a href="${pathToRoot}index-all.html">Index</a></li>
- |<li><a href="${pathToRoot}help-doc.html">Help</a></li>
- |</ul>
- |</div>
- |<div class="subNav">
- |<ul class="navListSearch">
- |<li><label for="search">SEARCH:</label>
- |<input type="text" id="search" value="search" disabled="disabled">
- |<input type="reset" id="reset" value="reset" disabled="disabled">
- |</li>
- |</ul>
- |</div>
- |<a id="skip.navbar.top">
- |<!-- -->
- |</a>
- |<!-- ========= END OF TOP NAVBAR ========= -->""".trimMargin("|")
-
-internal fun indexPage(title: String, version: String, tabTitle: String, colTitle: String, packages: List<PageNode>) = """
- |</div>
- |<div class="navPadding">&nbsp;</div>
- |<script type="text/javascript"><!--
- |${'$'}('.navPadding').css('padding-top', ${'$'}('.fixedNav').css("height"));
- |//-->
- |</script>
- |</nav>
- |</header>
- |<main role="main">
- |<div class="header">
- |<h1 class="title">$title $version API</h1>
- |</div>
- |<div class="contentContainer">
- |<div class="overviewSummary">
- |<table>
- |<caption><span>$tabTitle</span><span class="tabEnd">&nbsp;</span></caption>
- |<tr>
- |<th class="colFirst" scope="col">$colTitle</th>
- |<th class="colLast" scope="col">Description</th>
- |</tr>
- |<tbody>
- ${packages.mapIndexed { i, e -> e.generateLink(i) }.joinToString("\n")}
- |</tbody>
- |</table>
- |</div>
- |</div>
- |</main>
- |<footer role="contentinfo">
- |<nav role="navigation">
- |<!-- ======= START OF BOTTOM NAVBAR ====== -->
- |<div class="bottomNav"><a id="navbar.bottom">
- |<!-- -->
- |</a>
- |<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
- |<a id="navbar.bottom.firstrow">
- |<!-- -->
- |</a>
- |<ul class="navList" title="Navigation">
- |<li class="navBarCell1Rev">Overview</li>
- |<li>Package</li>
- |<li>Class</li>
- |<li><a href="overview-tree.html">Tree</a></li>
- |<li><a href="deprecated-list.html">Deprecated</a></li>
- |<li><a href="index-all.html">Index</a></li>
- |<li><a href="help-doc.html">Help</a></li>
- |</ul>
- |</div>
- |<a id="skip.navbar.bottom">
- |<!-- -->
- |</a>
- |<!-- ======== END OF BOTTOM NAVBAR ======= -->
- |</nav>
- |</footer>
- |</body>
- |</html>
- |""".trimMargin("|")
-
-fun classData(name: String, extends: String) = """
- |<!-- ======== START OF CLASS DATA ======== -->
- |<div class="header">
- |<div class="subTitle">adaptation</div>
- |<h2 title="Class $name" class="title">Class $name</h2>
- |</div>
- |<div class="contentContainer">
- ${classInheritance()}
- |<div class="description">
- |<ul class="blockList">
- |<li class="blockList">
- |<hr>
- |<br>
- |<pre>public class <span class="typeNameLabel">$name</span>
- |extends $name</pre>
- |</li>
- |</ul>
- |</div>
- |<div class="summary">
- |<ul class="blockList">
- |<li class="blockList">
- |<!-- ======== NESTED CLASS SUMMARY ======== -->
- |<ul class="blockList">
- |<li class="blockList"><a name="nested.class.summary">
- |<!-- -->
- |</a>
- |<h3>Nested Class Summary</h3>
- |<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
- |<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
- |<tr>
- |<th class="colFirst" scope="col">Modifier and Type</th>
- |<th class="colLast" scope="col">Class and Description</th>
- |</tr>
- |<tr class="altColor">
- |<td class="colFirst"><code>class&nbsp;</code></td>
- |<td class="colLast"><code><span class="memberNameLink"><a href="../adaptation/Adaptation.AdaptationInternalClass.html" title="class in adaptation">Adaptation.AdaptationInternalClass</a></span></code>&nbsp;</td>
- |</tr>
- |<tr class="rowColor">
- |<td class="colFirst"><code>static class&nbsp;</code></td>
- |<td class="colLast"><code><span class="memberNameLink"><a href="../adaptation/Adaptation.AdaptationInternalStaticClass.html" title="class in adaptation">Adaptation.AdaptationInternalStaticClass</a></span></code>&nbsp;</td>
- |</tr>
- |</table>
- |</li>
- |</ul>
- |<!-- ======== CONSTRUCTOR SUMMARY ======== -->
- |<ul class="blockList">
- |<li class="blockList"><a name="constructor.summary">
- |<!-- -->
- |</a>
- |<h3>Constructor Summary</h3>
- |<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
- |<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
- |<tr>
- |<th class="colOne" scope="col">Constructor and Description</th>
- |</tr>
- |<tr class="altColor">
- |<td class="colOne"><code><span class="memberNameLink"><a href="../adaptation/Adaptation.html#Adaptation--">Adaptation</a></span>()</code>&nbsp;</td>
- |</tr>
- |</table>
- |</li>
- |</ul>
- |<!-- ========== METHOD SUMMARY =========== -->
- |<ul class="blockList">
- |<li class="blockList"><a name="method.summary">
- |<!-- -->
- |</a>
- |<h3>Method Summary</h3>
- |<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
- |<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
- |<tr>
- |<th class="colFirst" scope="col">Modifier and Type</th>
- |<th class="colLast" scope="col">Method and Description</th>
- |</tr>
- |<tr id="i0" class="altColor">
- |<td class="colFirst"><code>static org.javatuples.Pair&lt;<a href="../model/ModelGraph.html" title="class in model">ModelGraph</a>,java.lang.Boolean&gt;</code></td>
- |<td class="colLast"><code><span class="memberNameLink"><a href="../adaptation/Adaptation.html#transform-model.ModelGraph-transformation.Transformation-">transform</a></span>(<a href="../model/ModelGraph.html" title="class in model">ModelGraph</a>&nbsp;graph,
- | <a href="../transformation/Transformation.html" title="interface in transformation">Transformation</a>&nbsp;transformation)</code>&nbsp;</td>