commit | 36f4b916bc956d8f5c9f6b55d295ea9a69c9f0bc | [log] [tgz] |
---|---|---|
author | Dmitry Jemerov <yole@jetbrains.com> | Wed Oct 28 15:23:50 2015 +0100 |
committer | Dmitry Jemerov <yole@jetbrains.com> | Thu Oct 29 11:57:24 2015 +0100 |
tree | cab9e34dec64cce5cea97bbf9f1bd5e276ac42be | |
parent | 78455025203b911c855f7cfc0d75270dd7351199 [diff] |
show inherited members in the list of class members
Dokka is documentation engine for Kotlin, performing the same function as javadoc for Java.
NOTE: It is work in progress both on compiler side and this tool. Do not base your business on it. Yet.
Dokka uses Kotlin-as-a-service technology to build code model
, then processes it into documentation model
. Documentation model
is graph of items describing code elements such as classes, packages, functions, etc.
Each node has semantic attached, e.g. Value:name -> Type:String means that some value name
is of type String
.
Each reference between nodes also has semantic attached, and there are three of them:
Member & Detail has reverse Owner reference, while Link's back reference is also Link.
Nodes that are Details of other nodes cannot have Members.
When we have documentation model, we can render docs in various formats, languages and layouts. We have some core services:
Basically, given the documentation
as a model, we do this:
val signatureGenerator = KotlinSignatureGenerator() val locationService = FoldersLocationService(arguments.outputDir) val markdown = JekyllFormatService(locationService, signatureGenerator) val generator = FileGenerator(signatureGenerator, locationService, markdown) generator.generate(documentation)
Dokka docs are built with Dokka. Yes, we bootstrap and dogfood :)
Documentation can be generated in various mark-up formats.
Place documentation in different file structure. All links are relative regardless of structure.
Output symbol declarations in different languages.
KDoc is a flavour of markdown with symbol processing extensions.
name
(markdown style)name
(Kotlin string interpolation style), or ${java.lang.String} for longer referencesname
, e.g. param docBuild only dokka
ant fatjar
Build dokka and maven plugin
ant install-fj cd maven-plugin mvn install
Build dokka and install maven plugin (do not require maven installed)
ant build-and-install
Minimal maven configuration is
<plugin> <groupId>org.jetbrains.dokka</groupId> <artifactId>dokka-maven-plugin</artifactId> <version>${dokka.version}</version> <executions> <execution> <phase>pre-site</phase> <goals> <goal>dokka</goal> </goals> </execution> </executions> </plugin>
by default files will be generated in target/dokka
Configuring source links mapping
<plugin> <groupId>org.jetbrains.dokka</groupId> <artifactId>dokka-maven-plugin</artifactId> <version>${dokka.version}</version> <executions> <execution> <phase>pre-site</phase> <goals> <goal>dokka</goal> </goals> </execution> </executions> <configuration> <sourceLinks> <link> <dir>${project.basedir}/src/main/kotlin</dir> <url>http://github.com/me/myrepo</url> </link> </sourceLinks> </configuration> </plugin>
buildscript { repositories { mavenLocal() jcenter() } dependencies { classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.1-SNAPSHOT" } } apply plugin: 'org.jetbrains.dokka'
To configure plugin use dokka lambda in the root scope. For example:
dokka { linkMapping { dir = "src/main/kotlin" url = "https://github.com/cy6erGn0m/vertx3-lang-kotlin/blob/master/src/main/kotlin" suffix = "#L" } }
To get it generated use gradle dokka
task
./gradlew dokka