commit | 778e2b3f7ff62971e18a49d81a8825e5dd894c2e | [log] [tgz] |
---|---|---|
author | Ilya Ryzhenkov <orangy@jetbrains.com> | Mon Sep 29 20:54:59 2014 +0400 |
committer | Ilya Ryzhenkov <orangy@jetbrains.com> | Mon Sep 29 20:54:59 2014 +0400 |
tree | f7fb9506800262ecabb9050ffee4a97e39812ccb | |
parent | 2e3dc238275073a5c7a2e5a14c79337d12492dad [diff] |
Extract content model, make doc model independent from descriptors, parse doccomments with custom parser, some tests failing due to hanging new lines.
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