@@ -31,7 +31,12 @@ private val logger = KotlinLogging.logger {}
31
31
*/
32
32
class UtJavaDocInfoGenerator {
33
33
fun addUtBotSpecificSectionsToJavaDoc (javadoc : String? , comment : PsiDocComment ): String {
34
- val builder: StringBuilder = StringBuilder (javadoc)
34
+ val builder = if (javadoc == null ) {
35
+ StringBuilder ()
36
+ } else {
37
+ StringBuilder (javadoc)
38
+ }
39
+
35
40
val docTagProvider = UtCustomJavaDocTagProvider ()
36
41
docTagProvider.supportedTags.forEach {
37
42
generateUtTagSection(builder, comment, it)
@@ -44,49 +49,54 @@ class UtJavaDocInfoGenerator {
44
49
*/
45
50
private fun generateUtTagSection (
46
51
builder : StringBuilder ,
47
- comment : PsiDocComment ? ,
52
+ comment : PsiDocComment ,
48
53
utTag : UtCustomJavaDocTagProvider .UtCustomTagInfo
49
54
) {
50
- if (comment != null ) {
51
- val tag = comment.findTagByName(utTag.name) ? : return
52
- startHeaderSection(builder, utTag.getMessage()).append(" <p>" )
53
- val sectionContent = buildString {
54
- generateValue(this , tag.dataElements)
55
- this .trim { it <= ' ' }
56
- }
57
- builder.append(sectionContent)
58
- builder.append(DocumentationMarkup .SECTION_END )
55
+ val tag = comment.findTagByName(utTag.name) ? : return
56
+ startHeaderSection(builder, utTag.getMessage()).append(" <p>" )
57
+ val sectionContent = buildString {
58
+ generateValue(this , tag.dataElements)
59
+ trim()
59
60
}
61
+
62
+ builder.append(sectionContent)
63
+ builder.append(DocumentationMarkup .SECTION_END )
60
64
}
61
65
62
- private fun startHeaderSection (builder : StringBuilder , message : String ): StringBuilder {
63
- return builder.append(DocumentationMarkup .SECTION_HEADER_START )
66
+ private fun startHeaderSection (builder : StringBuilder , message : String ): StringBuilder =
67
+ builder.append(DocumentationMarkup .SECTION_HEADER_START )
64
68
.append(message)
65
69
.append(MESSAGE_SEPARATOR )
66
70
.append(DocumentationMarkup .SECTION_SEPARATOR )
67
- }
68
71
69
72
/* *
70
73
* Generates info depending on tag's value type.
71
74
*/
72
75
private fun generateValue (builder : StringBuilder , elements : Array <PsiElement >) {
73
- var offset = if (elements.isNotEmpty()) {
74
- elements[0 ].textOffset + elements[0 ].text.length
75
- } else 0
76
-
77
- for (i in elements.indices) {
78
- if (elements[i].textOffset > offset) builder.append(' ' )
79
- offset = elements[i].textOffset + elements[i].text.length
80
- val element = elements[i]
81
- if (element is PsiInlineDocTag ) {
82
- when (element.name) {
83
- LITERAL_TAG -> generateLiteralValue(builder, element)
84
- CODE_TAG , SYSTEM_PROPERTY_TAG -> generateCodeValue(element, builder)
85
- LINK_TAG -> generateLinkValue(element, builder, false )
86
- LINKPLAIN_TAG -> generateLinkValue(element, builder, true )
76
+ if (elements.isEmpty()) {
77
+ return
78
+ }
79
+
80
+ var offset = elements[0 ].textOffset + elements[0 ].text.length
81
+
82
+ for (element in elements) {
83
+ with (element) {
84
+ if (textOffset > offset) {
85
+ builder.append(' ' )
86
+ }
87
+
88
+ offset = textOffset + text.length
89
+
90
+ if (element is PsiInlineDocTag ) {
91
+ when (element.name) {
92
+ LITERAL_TAG -> generateLiteralValue(builder, element)
93
+ CODE_TAG , SYSTEM_PROPERTY_TAG -> generateCodeValue(element, builder)
94
+ LINK_TAG -> generateLinkValue(element, builder, false )
95
+ LINKPLAIN_TAG -> generateLinkValue(element, builder, true )
96
+ }
97
+ } else {
98
+ appendPlainText(builder, text)
87
99
}
88
- } else {
89
- appendPlainText(builder, element.text)
90
100
}
91
101
}
92
102
}
@@ -140,11 +150,11 @@ class UtJavaDocInfoGenerator {
140
150
141
151
private fun generateLinkValue (tag : PsiInlineDocTag , builder : StringBuilder , plainLink : Boolean ) {
142
152
val tagElements = tag.dataElements
143
- val linkText: String = createLinkText(tagElements)
153
+ val linkText = createLinkText(tagElements)
144
154
if (linkText.isNotEmpty()) {
145
155
val index = JavaDocUtil .extractReference(linkText)
146
- val referenceText = linkText.substring(0 , index).trim { it <= ' ' }
147
- val label = StringUtil .nullize(linkText.substring(index).trim { it <= ' ' } )
156
+ val referenceText = linkText.substring(0 , index).trim()
157
+ val label = StringUtil .nullize(linkText.substring(index).trim() )
148
158
generateLink(builder, referenceText, label, tagElements[0 ], plainLink)
149
159
}
150
160
}
@@ -166,7 +176,7 @@ class UtJavaDocInfoGenerator {
166
176
this .append(' ' )
167
177
}
168
178
}
169
- }.trim { it <= ' ' }
179
+ }.trim()
170
180
}
171
181
172
182
private fun generateLink (
@@ -176,10 +186,8 @@ class UtJavaDocInfoGenerator {
176
186
context : PsiElement ,
177
187
plainLink : Boolean
178
188
) {
179
- var linkLabel = label
180
- if (label == null ) {
181
- val manager = context.manager
182
- linkLabel = JavaDocUtil .getLabelText(manager.project, manager, refText, context)
189
+ val linkLabel = label ? : context.manager.let {
190
+ JavaDocUtil .getLabelText(it.project, it, refText, context)
183
191
}
184
192
185
193
var target: PsiElement ? = null
@@ -196,9 +204,8 @@ class UtJavaDocInfoGenerator {
196
204
} else if (target == null ) {
197
205
builder.append(" <font color=red>" ).append(linkLabel).append(" </font>" )
198
206
} else {
199
- val referenceText = JavaDocUtil .getReferenceText(target.project, target)
200
- if (referenceText != null ) {
201
- DocumentationManagerUtil .createHyperlink(builder, target, referenceText, linkLabel, plainLink)
207
+ JavaDocUtil .getReferenceText(target.project, target)?.let {
208
+ DocumentationManagerUtil .createHyperlink(builder, target, it, linkLabel, plainLink)
202
209
}
203
210
}
204
211
}
0 commit comments