commit | 716483c2f20e4af1951342f2acc9a231fcbeab3b | [log] [tgz] |
---|---|---|
author | Dmitry Jemerov <yole@jetbrains.com> | Tue Dec 30 17:41:14 2014 +0100 |
committer | Dmitry Jemerov <yole@jetbrains.com> | Tue Dec 30 17:41:47 2014 +0100 |
tree | 84cd1011021bb6ef38f9567d80805edf17ecc2d7 | |
parent | 0e70fa4ca021bff09e7d9ce64269a4e698512af5 [diff] |
render annotation classes correctly
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 doc