aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Jemerov <yole@jetbrains.com>2015-01-09 20:59:58 +0100
committerDmitry Jemerov <yole@jetbrains.com>2015-01-09 20:59:58 +0100
commite17eaa5fbc296bab0f32e8169d50fea06a6de581 (patch)
treee8048ee2dc036209a632966daf5f948984371329 /src
parent1a4794397f3e5db8dac12d1797edd16c121de21f (diff)
downloaddokka-e17eaa5fbc296bab0f32e8169d50fea06a6de581.tar.gz
dokka-e17eaa5fbc296bab0f32e8169d50fea06a6de581.tar.bz2
dokka-e17eaa5fbc296bab0f32e8169d50fea06a6de581.zip
nice rendering for deprecated members
Diffstat (limited to 'src')
-rw-r--r--src/Formats/HtmlFormatService.kt4
-rw-r--r--src/Formats/MarkdownFormatService.kt4
-rw-r--r--src/Formats/StructuredFormatService.kt14
-rw-r--r--src/Kotlin/DocumentationBuilder.kt6
-rw-r--r--src/Kotlin/KotlinLanguageService.kt16
-rw-r--r--src/Model/Content.kt1
-rw-r--r--src/Model/DocumentationNode.kt2
-rw-r--r--src/Model/DocumentationReference.kt1
8 files changed, 44 insertions, 4 deletions
diff --git a/src/Formats/HtmlFormatService.kt b/src/Formats/HtmlFormatService.kt
index b23e4a45..f76693dc 100644
--- a/src/Formats/HtmlFormatService.kt
+++ b/src/Formats/HtmlFormatService.kt
@@ -93,6 +93,10 @@ public open class HtmlFormatService(locationService: LocationService,
return "<emph>${text}</emph>"
}
+ override fun formatStrikethrough(text: String): String {
+ return "<s>${text}</s>"
+ }
+
override fun formatCode(code: String): String {
return "<code>${code}</code>"
}
diff --git a/src/Formats/MarkdownFormatService.kt b/src/Formats/MarkdownFormatService.kt
index 38fadf7a..a2e3ce55 100644
--- a/src/Formats/MarkdownFormatService.kt
+++ b/src/Formats/MarkdownFormatService.kt
@@ -46,6 +46,10 @@ public open class MarkdownFormatService(locationService: LocationService,
return "*$text*"
}
+ override fun formatStrikethrough(text: String): String {
+ return "~~$text~~"
+ }
+
override public fun formatLink(text: String, location: Location): String {
return "[$text](${location.path})"
}
diff --git a/src/Formats/StructuredFormatService.kt b/src/Formats/StructuredFormatService.kt
index cb510f80..51222ffb 100644
--- a/src/Formats/StructuredFormatService.kt
+++ b/src/Formats/StructuredFormatService.kt
@@ -1,6 +1,7 @@
package org.jetbrains.dokka
import java.util.LinkedHashMap
+import com.intellij.openapi.util.text.StringUtil
public data class FormatLink(val text: String, val location: Location)
@@ -28,6 +29,7 @@ public abstract class StructuredFormatService(val locationService: LocationServi
public abstract fun formatLink(text: String, href: String): String
public open fun formatLink(link: FormatLink): String = formatLink(formatText(link.text), link.location)
public abstract fun formatStrong(text: String): String
+ public abstract fun formatStrikethrough(text: String): String
public abstract fun formatEmphasis(text: String): String
public abstract fun formatCode(code: String): String
public abstract fun formatList(text: String): String
@@ -46,6 +48,7 @@ public abstract class StructuredFormatService(val locationService: LocationServi
is ContentKeyword -> append(formatKeyword(content.text))
is ContentIdentifier -> append(formatIdentifier(content.text))
is ContentStrong -> append(formatStrong(formatText(location, content.children)))
+ is ContentStrikethrough -> append(formatStrikethrough(formatText(location, content.children)))
is ContentCode -> append(formatCode(formatText(location, content.children)))
is ContentEmphasis -> append(formatEmphasis(formatText(location, content.children)))
is ContentList -> append(formatList(formatText(location, content.children)))
@@ -116,6 +119,17 @@ public abstract class StructuredFormatService(val locationService: LocationServi
for ((summary, items) in breakdownBySummary) {
items.forEach {
appendBlockCode(to, formatText(location, languageService.render(it)))
+ val deprecation = it.deprecation
+ if (deprecation != null) {
+ val deprecationParameter = deprecation.details(DocumentationNode.Kind.Parameter).firstOrNull()
+ val deprecationValue = deprecationParameter?.details(DocumentationNode.Kind.Value)?.firstOrNull()
+ if (deprecationValue != null) {
+ to.append(formatStrong("Deprecated: "))
+ appendLine(to, formatText(StringUtil.unquoteString(deprecationValue.name)))
+ } else {
+ appendLine(to, formatStrong("Deprecated"))
+ }
+ }
}
appendLine(to, summary)
appendLine(to)
diff --git a/src/Kotlin/DocumentationBuilder.kt b/src/Kotlin/DocumentationBuilder.kt
index 844d8290..121c44bf 100644
--- a/src/Kotlin/DocumentationBuilder.kt
+++ b/src/Kotlin/DocumentationBuilder.kt
@@ -127,7 +127,11 @@ class DocumentationBuilder(val session: ResolveSession, val options: Documentati
fun DocumentationNode.appendAnnotations(annotated: Annotated) {
annotated.getAnnotations().forEach {
- it.build()?.let { append(it, DocumentationReference.Kind.Annotation) }
+ val annotationNode = it.build()
+ if (annotationNode != null) {
+ append(annotationNode,
+ if (annotationNode.name == "deprecated") DocumentationReference.Kind.Deprecation else DocumentationReference.Kind.Annotation)
+ }
}
}
diff --git a/src/Kotlin/KotlinLanguageService.kt b/src/Kotlin/KotlinLanguageService.kt
index 92d5bf1d..2ed308f8 100644
--- a/src/Kotlin/KotlinLanguageService.kt
+++ b/src/Kotlin/KotlinLanguageService.kt
@@ -196,7 +196,7 @@ class KotlinLanguageService : LanguageService {
else -> throw IllegalArgumentException("Node $node is not a class-like object")
}
- identifier(node.name)
+ identifierOrDeprecated(node)
renderTypeParametersForNode(node)
renderSupertypesForNode(node)
}
@@ -218,7 +218,7 @@ class KotlinLanguageService : LanguageService {
}
if (node.kind != org.jetbrains.dokka.DocumentationNode.Kind.Constructor)
- identifier(node.name)
+ identifierOrDeprecated(node)
symbol("(")
renderList(node.details(DocumentationNode.Kind.Parameter)) {
@@ -246,8 +246,18 @@ class KotlinLanguageService : LanguageService {
symbol(".")
}
- identifier(node.name)
+ identifierOrDeprecated(node)
symbol(": ")
renderType(node.detail(DocumentationNode.Kind.Type))
}
+
+ fun ContentNode.identifierOrDeprecated(node: DocumentationNode) {
+ if (node.deprecation != null) {
+ val strike = ContentStrikethrough()
+ strike.identifier(node.name)
+ append(strike)
+ } else {
+ identifier(node.name)
+ }
+ }
} \ No newline at end of file
diff --git a/src/Model/Content.kt b/src/Model/Content.kt
index e1c1ef78..8491fd88 100644
--- a/src/Model/Content.kt
+++ b/src/Model/Content.kt
@@ -27,6 +27,7 @@ public class ContentSymbol(val text: String) : ContentNode()
public class ContentParagraph() : ContentBlock()
public class ContentEmphasis() : ContentBlock()
public class ContentStrong() : ContentBlock()
+public class ContentStrikethrough() : ContentBlock()
public class ContentCode() : ContentBlock()
public class ContentBlockCode() : ContentBlock()
public class ContentNodeLink(val node : DocumentationNode) : ContentBlock()
diff --git a/src/Model/DocumentationNode.kt b/src/Model/DocumentationNode.kt
index 5f9aabab..635d1db9 100644
--- a/src/Model/DocumentationNode.kt
+++ b/src/Model/DocumentationNode.kt
@@ -32,6 +32,8 @@ public open class DocumentationNode(val name: String,
get() = references(DocumentationReference.Kind.Link).map { it.to }
public val annotations: List<DocumentationNode>
get() = references(DocumentationReference.Kind.Annotation).map { it.to }
+ public val deprecation: DocumentationNode?
+ get() = references(DocumentationReference.Kind.Deprecation).singleOrNull()?.to
// TODO: Should we allow node mutation? Model merge will copy by ref, so references are transparent, which could nice
public fun addReferenceTo(to: DocumentationNode, kind: DocumentationReference.Kind) {
diff --git a/src/Model/DocumentationReference.kt b/src/Model/DocumentationReference.kt
index 9fb366cb..bd40f0f5 100644
--- a/src/Model/DocumentationReference.kt
+++ b/src/Model/DocumentationReference.kt
@@ -10,6 +10,7 @@ public data class DocumentationReference(val from: DocumentationNode, val to: Do
Inheritor
Override
Annotation
+ Deprecation
}
}