Refactoring: extract urls to separate class and remove long strings
This commit is contained in:
Generated
+2
@@ -10,6 +10,7 @@
|
||||
<w>infos</w>
|
||||
<w>intrinsics</w>
|
||||
<w>kdoc</w>
|
||||
<w>lateinit</w>
|
||||
<w>memoize</w>
|
||||
<w>memoized</w>
|
||||
<w>multiline</w>
|
||||
@@ -23,6 +24,7 @@
|
||||
<w>subclassed</w>
|
||||
<w>subgraph</w>
|
||||
<w>substep</w>
|
||||
<w>tailrec</w>
|
||||
</words>
|
||||
</dictionary>
|
||||
</component>
|
||||
@@ -31,6 +31,8 @@ import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.kotlin.asJava.LightClassUtil
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.DocumentationURLs.LATE_INITIALIZED_PROPERTIES_AND_VARIABLES_URL
|
||||
import org.jetbrains.kotlin.idea.DocumentationURLs.TAIL_RECURSIVE_FUNCTIONS_URL
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
@@ -63,6 +65,14 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.constant
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
private object DocumentationURLs {
|
||||
const val LATE_INITIALIZED_PROPERTIES_AND_VARIABLES_URL =
|
||||
"http://kotlinlang.org/docs/reference/properties.html#late-initialized-properties-and-variables"
|
||||
|
||||
const val TAIL_RECURSIVE_FUNCTIONS_URL =
|
||||
"http://kotlinlang.org/docs/reference/functions.html#tail-recursive-functions"
|
||||
}
|
||||
|
||||
class HtmlClassifierNamePolicy(val base: ClassifierNamePolicy) : ClassifierNamePolicy {
|
||||
override fun renderClassifier(classifier: ClassifierDescriptor, renderer: DescriptorRenderer): String {
|
||||
if (DescriptorUtils.isAnonymousObject(classifier)) {
|
||||
@@ -281,8 +291,17 @@ class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() {
|
||||
return renderKotlinDeclaration(origin, quickNavigation)
|
||||
} else if (element.isModifier()) {
|
||||
when(element.text) {
|
||||
KtTokens.LATEINIT_KEYWORD.value -> return """lateinit allows initializing a <a href="http://kotlinlang.org/docs/reference/properties.html#late-initialized-properties-and-variables">non-null property outside of a constructor</a>"""
|
||||
KtTokens.TAILREC_KEYWORD.value -> return """tailrec marks a function as <a href="http://kotlinlang.org/docs/reference/functions.html#tail-recursive-functions">tail-recursive</a> (allowing the compiler to replace recursion with iteration)"""
|
||||
KtTokens.LATEINIT_KEYWORD.value -> {
|
||||
return "lateinit allows initializing a ${a(
|
||||
LATE_INITIALIZED_PROPERTIES_AND_VARIABLES_URL,
|
||||
"non-null property outside of a constructor"
|
||||
)}"
|
||||
}
|
||||
|
||||
KtTokens.TAILREC_KEYWORD.value -> {
|
||||
return "tailrec marks a function as ${a(TAIL_RECURSIVE_FUNCTIONS_URL, "tail-recursive")} " +
|
||||
"(allowing the compiler to replace recursion with iteration)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -383,7 +402,6 @@ class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun StringBuilder.renderDefinition(descriptor: DeclarationDescriptor, renderer: DescriptorRenderer) {
|
||||
if (!DescriptorUtils.isLocal(descriptor)) {
|
||||
val containingDeclaration = descriptor.containingDeclaration
|
||||
@@ -469,6 +487,10 @@ class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() {
|
||||
wrap("<$tag>", "</$tag>", body)
|
||||
}
|
||||
|
||||
private fun a(url: String, text: String): String {
|
||||
return """<a href="$url">$text</a>"""
|
||||
}
|
||||
|
||||
private fun mixKotlinToJava(
|
||||
declarationDescriptor: DeclarationDescriptor,
|
||||
element: PsiElement,
|
||||
|
||||
Reference in New Issue
Block a user