Skip to content

Commit 6406358

Browse files
committed
Fix docs to fit for Dokka
1 parent c100e35 commit 6406358

File tree

1 file changed

+40
-12
lines changed

1 file changed

+40
-12
lines changed

processor/src/main/kotlin/com/tobrun/datacompat/DataCompatProcessor.kt

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,11 @@ class DataCompatProcessor(
182182
for (entry in propertyMap) {
183183
addProperty(
184184
PropertySpec.builder(entry.key.toString(), entry.value)
185+
.addKdoc(
186+
"""
187+
|Represents ${getKDocProperty(kdocPropertyList, entry.key.toString())}
188+
""".trimMargin()
189+
)
185190
.initializer(entry.key.toString())
186191
.build()
187192
)
@@ -191,6 +196,11 @@ class DataCompatProcessor(
191196
addFunction(
192197
FunSpec.builder("toString")
193198
.addModifiers(KModifier.OVERRIDE)
199+
.addKdoc(
200+
"""
201+
Overloaded toString function.
202+
""".trimIndent()
203+
)
194204
// using triple quote for long strings
195205
.addStatement(
196206
propertyMap.keys.joinToString(
@@ -205,6 +215,11 @@ class DataCompatProcessor(
205215
// Function equals
206216
val equalsBuilder = FunSpec.builder("equals")
207217
.addModifiers(KModifier.OVERRIDE)
218+
.addKdoc(
219+
"""
220+
Overloaded equals function.
221+
""".trimIndent()
222+
)
208223
.addParameter("other", ANY.copy(nullable = true))
209224
.addStatement("if (this === other) return true")
210225
.addStatement("if (javaClass != other?.javaClass) return false")
@@ -223,6 +238,11 @@ class DataCompatProcessor(
223238
// Function hashCode
224239
addFunction(
225240
FunSpec.builder("hashCode")
241+
.addKdoc(
242+
"""
243+
Overloaded hashCode function based on all class properties.
244+
""".trimIndent()
245+
)
226246
.addModifiers(KModifier.OVERRIDE)
227247
.addStatement(
228248
propertyMap.keys.joinToString(
@@ -265,15 +285,20 @@ class DataCompatProcessor(
265285
val builderBuilder = TypeSpec.classBuilder("Builder")
266286
for (property in propertyMap) {
267287
val propertyName = property.key.toString()
268-
269288
val nullableType = property.value.copy(nullable = true)
289+
val kDocProperty = getKDocProperty(kdocPropertyList, propertyName)
270290
builderBuilder.addProperty(
271291
PropertySpec.builder(propertyName, nullableType)
272292
.initializer(
273293
CodeBlock.builder()
274294
.add(defaultValuesMap[classDeclaration]?.get(propertyName) ?: "null")
275295
.build()
276296
)
297+
.addKdoc(
298+
"""
299+
|Represents $kDocProperty
300+
""".trimMargin()
301+
)
277302
.addAnnotation(
278303
AnnotationSpec.builder(JvmSynthetic::class)
279304
.useSiteTarget(AnnotationSpec.UseSiteTarget.SET)
@@ -283,16 +308,6 @@ class DataCompatProcessor(
283308
.build()
284309
)
285310

286-
var kDocProperty = kdocPropertyList
287-
.filter { it.startsWith("$propertyName ") }
288-
.joinToString {
289-
it.substringAfter("$propertyName ").lowercase(Locale.getDefault())
290-
}
291-
292-
if (kDocProperty.isEmpty()) {
293-
kDocProperty = propertyName
294-
}
295-
296311
builderBuilder.addFunction(
297312
FunSpec
298313
.builder(
@@ -356,7 +371,7 @@ class DataCompatProcessor(
356371
|
357372
|${
358373
kdocPropertyList.joinToString(
359-
prefix = "$KDOC_PROPERTY_ANNOTATION ",
374+
prefix = if (kdocPropertyList.isEmpty()) "" else "$KDOC_PROPERTY_ANNOTATION ",
360375
separator = "\n$KDOC_PROPERTY_ANNOTATION "
361376
)
362377
}
@@ -454,6 +469,19 @@ class DataCompatProcessor(
454469

455470
private fun KSClassDeclaration.isDataClass() = modifiers.contains(Modifier.DATA)
456471

472+
private fun getKDocProperty(kdocPropertyList: List<String>, propertyName: String): String {
473+
var kDocProperty = kdocPropertyList
474+
.filter { it.startsWith("$propertyName ") }
475+
.joinToString {
476+
it.substringAfter("$propertyName ").lowercase(Locale.getDefault())
477+
}
478+
479+
if (kDocProperty.isEmpty()) {
480+
kDocProperty = propertyName
481+
}
482+
return kDocProperty
483+
}
484+
457485
private companion object {
458486
private const val CLASS_NAME_DROP_LAST_CHARACTERS = 4
459487
private const val KDOC_PROPERTY_ANNOTATION = "@property"

0 commit comments

Comments
 (0)