Skip to content

Commit 23f02f5

Browse files
committed
use optional md converter
1 parent c294058 commit 23f02f5

1 file changed

Lines changed: 19 additions & 9 deletions

File tree

src/main/kotlin/com/github/xepozz/gitattributes/ide/documentation/AttributesDocumentationProvider.kt

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
package com.github.xepozz.gitattributes.ide.documentation
22

3-
import com.github.xepozz.crontab.ide.documentation.AttributesDocumentationUtils
43
import com.github.xepozz.gitattributes.language.AttributesFile
54
import com.github.xepozz.gitattributes.language.psi.AttributesDefinition
6-
import com.github.xepozz.gitattributes.language.psi.AttributesPattern
75
import com.intellij.extapi.psi.ASTDelegatePsiElement
86
import com.intellij.lang.ASTNode
9-
import com.intellij.lang.documentation.DocumentationMarkup
107
import com.intellij.lang.documentation.DocumentationProvider
11-
import com.intellij.lang.documentation.QuickDocHighlightingHelper
128
import com.intellij.markdown.utils.doc.DocMarkdownToHtmlConverter
139
import com.intellij.openapi.editor.Editor
1410
import com.intellij.openapi.project.Project
@@ -17,7 +13,6 @@ import com.intellij.psi.PsiComment
1713
import com.intellij.psi.PsiDocCommentBase
1814
import com.intellij.psi.PsiElement
1915
import com.intellij.psi.PsiFile
20-
import com.intellij.psi.presentation.java.SymbolPresentationUtil
2116
import com.intellij.psi.util.PsiTreeUtil
2217
import java.util.function.Consumer
2318

@@ -49,10 +44,25 @@ class AttributesDocumentationProvider : DocumentationProvider {
4944

5045
override fun generateRenderedDoc(comment: PsiDocCommentBase) = markdownToHtml(comment.text, comment.project)
5146

52-
fun markdownToHtml(string: String, project: Project) = string
53-
.split("\n")
54-
.joinToString("\n") { it.replaceFirst(Regex("#+\\s+"), "") }
55-
.let { DocMarkdownToHtmlConverter.convert(project, it) }
47+
fun markdownToHtml(string: String, project: Project): String {
48+
val markdownText = string
49+
.split("\n")
50+
.joinToString("\n") { it.replaceFirst(Regex("#+\\s+"), "") }
51+
52+
return try {
53+
// Dynamically find the class
54+
val clazz = Class.forName("com.intellij.markdown.utils.doc.DocMarkdownToHtmlConverter")
55+
56+
// Find the 'convert' method (assuming it's `static fun convert(project, text)`)
57+
val method = clazz.getMethod("convert", Project::class.java, String::class.java)
58+
59+
// Invoke the static method
60+
method.invoke(null, project, markdownText) as String
61+
} catch (e: ClassNotFoundException) {
62+
// println("Markdown converter not available, returning plain text.")
63+
markdownText
64+
}
65+
}
5666

5767
override fun findDocComment(file: PsiFile, range: TextRange): PsiDocCommentBase? {
5868
val element = file.findElementAt(range.startOffset) as? PsiComment ?: return null

0 commit comments

Comments
 (0)