Skip to content

Commit 50115e5

Browse files
committed
feat(gen-kotlin): PASCAL_CASE_ROUTINE_BASE_NAMES feature flag
1 parent 4e7a5e1 commit 50115e5

9 files changed

Lines changed: 50 additions & 30 deletions

File tree

mmrpc-gen-kotlin/src/commonMain/kotlin/Declarations.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ enum class GenFeature {
6161
*/
6262
KDOC_SIGNATURE,
6363

64+
/**
65+
* Use PascalCase for routine functions inside a protocol.
66+
*/
67+
PASCAL_CASE_ROUTINE_BASE_NAMES,
68+
6469
/**
6570
* Keep original type class names.
6671
*/

mmrpc-gen-kotlin/src/commonMain/kotlin/common/model/RoutineDefinition.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.cufy.mmrpc.gen.kotlin.common.model
22

33
import com.squareup.kotlinpoet.*
44
import net.pearx.kasechange.toCamelCase
5+
import net.pearx.kasechange.toPascalCase
56
import org.cufy.mmrpc.RoutineDefinition
67
import org.cufy.mmrpc.gen.kotlin.ContextScope
78
import org.cufy.mmrpc.gen.kotlin.GenFeature
@@ -17,13 +18,25 @@ import org.cufy.mmrpc.runtime.FaultException
1718

1819
@ContextScope
1920
context(ctx: Context)
20-
fun RoutineDefinition.nameOfFunction(): String {
21+
fun RoutineDefinition.nameOfExtFunction(): String {
2122
if (GenFeature.KEEP_ROUTINE_FUNCTION_NAMES in ctx.features)
2223
return name
2324

2425
return name.toCamelCase()
2526
}
2627

28+
@ContextScope
29+
context(ctx: Context)
30+
fun RoutineDefinition.nameOfBaseFunction(): String {
31+
if (GenFeature.KEEP_ROUTINE_FUNCTION_NAMES in ctx.features)
32+
return name
33+
34+
if (GenFeature.PASCAL_CASE_ROUTINE_BASE_NAMES in ctx.features)
35+
return name.toPascalCase()
36+
37+
return name.toCamelCase()
38+
}
39+
2740
@ContextScope
2841
context(ctx: Context)
2942
fun RoutineDefinition.generatedClassName(): ClassName {
@@ -114,7 +127,7 @@ fun RoutineDefinition.clientFlatImplCode(
114127
fields: List<String>,
115128
): CodeBlock {
116129
return buildCodeBlock {
117-
addStatement("♢return %L(\n⇥%L⇤\n)", nameOfFunction(), createCall(
130+
addStatement("♢return %L(\n⇥%L⇤\n)", nameOfBaseFunction(), createCall(
118131
function = CodeBlock.of("%T", request),
119132
parameters = fields.associateWith {
120133
CodeBlock.of(it)

mmrpc-gen-kotlin/src/commonMain/kotlin/gen/base/ProtocolN0Gen.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private fun apply(element: ProtocolDefinition) {
4747

4848
// abstract N0 functions
4949
for (routine in routines) {
50-
addFunction(funSpec(routine.nameOfFunction()) {
50+
addFunction(funSpec(routine.nameOfBaseFunction()) {
5151
addModifiers(KModifier.ABSTRACT, KModifier.SUSPEND)
5252
addKdoc(createKdocCode(routine))
5353
addParameter("request", routine.input.className())
@@ -64,7 +64,7 @@ private fun apply(element: ProtocolDefinition) {
6464

6565
// impl N0 functions
6666
for (routine in routines) {
67-
addFunction(funSpec(routine.nameOfFunction()) {
67+
addFunction(funSpec(routine.nameOfBaseFunction()) {
6868
addModifiers(KModifier.OVERRIDE, KModifier.SUSPEND)
6969
addParameter("request", routine.input.className())
7070
returns(UNIT)
@@ -86,13 +86,13 @@ private fun apply(element: ProtocolDefinition) {
8686
for (routine in routines) {
8787
addStatement("%L", routine.serverRegisterCode(
8888
register = Intrinsics.REGISTER0,
89-
handler = CodeBlock.of("impl::%L", routine.nameOfFunction()),
89+
handler = CodeBlock.of("impl::%L", routine.nameOfBaseFunction()),
9090
))
9191
}
9292
})
9393
// <protocol>.Companion.<routine>.invoke( handler: WrapHandler0<request> )
9494
for (routine in routines) {
95-
addFunction(funSpec(routine.nameOfFunction()) {
95+
addFunction(funSpec(routine.nameOfExtFunction()) {
9696
contextParameter("engine", ServerEngine::class)
9797
receiver(element.generatedClassName().nestedClass("Companion"))
9898
addParameter(
@@ -115,7 +115,7 @@ private fun apply(element: ProtocolDefinition) {
115115
for (routine in routines) {
116116
val fields = routine.input.collectAllFields().toList()
117117

118-
addFunction(funSpec(routine.nameOfFunction()) {
118+
addFunction(funSpec(routine.nameOfExtFunction()) {
119119
addModifiers(KModifier.SUSPEND)
120120
receiver(element.generatedBaseClassName(BASE_NAME))
121121
for (field in fields) {

mmrpc-gen-kotlin/src/commonMain/kotlin/gen/base/ProtocolN0RGen.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private fun apply(element: ProtocolDefinition) {
4747

4848
// abstract N0R functions
4949
for (routine in routines) {
50-
addFunction(funSpec(routine.nameOfFunction()) {
50+
addFunction(funSpec(routine.nameOfBaseFunction()) {
5151
addModifiers(KModifier.ABSTRACT, KModifier.SUSPEND)
5252
addKdoc(createKdocCode(routine))
5353
addParameter("request", routine.output.className())
@@ -64,7 +64,7 @@ private fun apply(element: ProtocolDefinition) {
6464

6565
// impl N0R functions
6666
for (routine in routines) {
67-
addFunction(funSpec(routine.nameOfFunction()) {
67+
addFunction(funSpec(routine.nameOfBaseFunction()) {
6868
addModifiers(KModifier.OVERRIDE, KModifier.SUSPEND)
6969
addParameter("request", routine.output.className())
7070
returns(UNIT)
@@ -86,13 +86,13 @@ private fun apply(element: ProtocolDefinition) {
8686
for (routine in routines) {
8787
addStatement("%L", routine.serverRegisterCode(
8888
register = Intrinsics.REGISTER0,
89-
handler = CodeBlock.of("impl::%L", routine.nameOfFunction()),
89+
handler = CodeBlock.of("impl::%L", routine.nameOfBaseFunction()),
9090
))
9191
}
9292
})
9393
// <protocol>.Reflux.Companion.<routine>.invoke( handler: WrapHandler0<request> )
9494
for (routine in routines) {
95-
addFunction(funSpec(routine.nameOfFunction()) {
95+
addFunction(funSpec(routine.nameOfExtFunction()) {
9696
contextParameter("engine", ServerEngine::class)
9797
receiver(element.generatedRefluxClassName().nestedClass("Companion"))
9898
addParameter(
@@ -115,7 +115,7 @@ private fun apply(element: ProtocolDefinition) {
115115
for (routine in routines) {
116116
val fields = routine.output.collectAllFields().toList()
117117

118-
addFunction(funSpec(routine.nameOfFunction()) {
118+
addFunction(funSpec(routine.nameOfExtFunction()) {
119119
addModifiers(KModifier.SUSPEND)
120120
receiver(element.generatedBaseClassName(BASE_NAME))
121121
for (field in fields) {

mmrpc-gen-kotlin/src/commonMain/kotlin/gen/base/ProtocolN1Gen.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ private fun apply(element: ProtocolDefinition) {
4646

4747
// abstract N1 functions
4848
for (routine in routines) {
49-
addFunction(funSpec(routine.nameOfFunction()) {
49+
addFunction(funSpec(routine.nameOfBaseFunction()) {
5050
addModifiers(KModifier.ABSTRACT, KModifier.SUSPEND)
5151
addKdoc(createKdocCode(routine))
5252
addParameter("request", routine.input.className())
@@ -63,7 +63,7 @@ private fun apply(element: ProtocolDefinition) {
6363

6464
// impl N1 functions
6565
for (routine in routines) {
66-
addFunction(funSpec(routine.nameOfFunction()) {
66+
addFunction(funSpec(routine.nameOfBaseFunction()) {
6767
addModifiers(KModifier.OVERRIDE, KModifier.SUSPEND)
6868
addParameter("request", routine.input.className())
6969
returns(routine.output.className())
@@ -85,13 +85,13 @@ private fun apply(element: ProtocolDefinition) {
8585
for (routine in routines) {
8686
addStatement("%L", routine.serverRegisterCode(
8787
register = Intrinsics.REGISTER1,
88-
handler = CodeBlock.of("impl::%L", routine.nameOfFunction()),
88+
handler = CodeBlock.of("impl::%L", routine.nameOfBaseFunction()),
8989
))
9090
}
9191
})
9292
// <protocol>.Companion.<routine>.invoke( handler: WrapHandler1<request> )
9393
for (routine in routines) {
94-
addFunction(funSpec(routine.nameOfFunction()) {
94+
addFunction(funSpec(routine.nameOfExtFunction()) {
9595
contextParameter("engine", ServerEngine::class)
9696
receiver(element.generatedClassName().nestedClass("Companion"))
9797
addParameter(
@@ -117,7 +117,7 @@ private fun apply(element: ProtocolDefinition) {
117117
for (routine in routines) {
118118
val fields = routine.input.collectAllFields().toList()
119119

120-
addFunction(funSpec(routine.nameOfFunction()) {
120+
addFunction(funSpec(routine.nameOfExtFunction()) {
121121
addModifiers(KModifier.SUSPEND)
122122
receiver(element.generatedBaseClassName(BASE_NAME))
123123
for (field in fields) {

mmrpc-gen-kotlin/src/commonMain/kotlin/gen/base/ProtocolN2Gen.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private fun apply(element: ProtocolDefinition) {
4747

4848
// abstract N2 functions
4949
for (routine in routines) {
50-
addFunction(funSpec(routine.nameOfFunction()) {
50+
addFunction(funSpec(routine.nameOfBaseFunction()) {
5151
addModifiers(KModifier.ABSTRACT, KModifier.SUSPEND)
5252
addKdoc(createKdocCode(routine))
5353
addParameter("request", FLOW.parameterizedBy(routine.input.className()))
@@ -64,7 +64,7 @@ private fun apply(element: ProtocolDefinition) {
6464

6565
// impl N2 functions
6666
for (routine in routines) {
67-
addFunction(funSpec(routine.nameOfFunction()) {
67+
addFunction(funSpec(routine.nameOfBaseFunction()) {
6868
addModifiers(KModifier.OVERRIDE, KModifier.SUSPEND)
6969
addParameter("request", FLOW.parameterizedBy(routine.input.className()))
7070
returns(routine.output.className())
@@ -86,13 +86,13 @@ private fun apply(element: ProtocolDefinition) {
8686
for (routine in routines) {
8787
addStatement("%L", routine.serverRegisterCode(
8888
register = Intrinsics.REGISTER2,
89-
handler = CodeBlock.of("impl::%L", routine.nameOfFunction()),
89+
handler = CodeBlock.of("impl::%L", routine.nameOfBaseFunction()),
9090
))
9191
}
9292
})
9393
// <protocol>.Companion.<routine>.invoke( handler: WrapHandler2<request> )
9494
for (routine in routines) {
95-
addFunction(funSpec(routine.nameOfFunction()) {
95+
addFunction(funSpec(routine.nameOfExtFunction()) {
9696
contextParameter("engine", ServerEngine::class)
9797
receiver(element.generatedClassName().nestedClass("Companion"))
9898
addParameter(

mmrpc-gen-kotlin/src/commonMain/kotlin/gen/base/ProtocolN3Gen.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private fun apply(element: ProtocolDefinition) {
4747

4848
// abstract N3 functions
4949
for (routine in routines) {
50-
addFunction(funSpec(routine.nameOfFunction()) {
50+
addFunction(funSpec(routine.nameOfBaseFunction()) {
5151
addModifiers(KModifier.ABSTRACT)
5252
addKdoc(createKdocCode(routine))
5353
addParameter("request", routine.input.className())
@@ -64,7 +64,7 @@ private fun apply(element: ProtocolDefinition) {
6464

6565
// impl N3 functions
6666
for (routine in routines) {
67-
addFunction(funSpec(routine.nameOfFunction()) {
67+
addFunction(funSpec(routine.nameOfBaseFunction()) {
6868
addModifiers(KModifier.OVERRIDE)
6969
addParameter("request", routine.input.className())
7070
returns(FLOW.parameterizedBy(routine.output.className()))
@@ -86,13 +86,13 @@ private fun apply(element: ProtocolDefinition) {
8686
for (routine in routines) {
8787
addStatement("%L", routine.serverRegisterCode(
8888
register = Intrinsics.REGISTER3,
89-
handler = CodeBlock.of("impl::%L", routine.nameOfFunction()),
89+
handler = CodeBlock.of("impl::%L", routine.nameOfBaseFunction()),
9090
))
9191
}
9292
})
9393
// <protocol>.Companion.<routine>.invoke( handler: WrapHandler3<request> )
9494
for (routine in routines) {
95-
addFunction(funSpec(routine.nameOfFunction()) {
95+
addFunction(funSpec(routine.nameOfExtFunction()) {
9696
contextParameter("engine", ServerEngine::class)
9797
receiver(element.generatedClassName().nestedClass("Companion"))
9898
addParameter(
@@ -118,7 +118,7 @@ private fun apply(element: ProtocolDefinition) {
118118
for (routine in routines) {
119119
val fields = routine.input.collectAllFields().toList()
120120

121-
addFunction(funSpec(routine.nameOfFunction()) {
121+
addFunction(funSpec(routine.nameOfExtFunction()) {
122122
receiver(element.generatedBaseClassName(BASE_NAME))
123123
for (field in fields) {
124124
addParameter(field.parameterSpec())

mmrpc-gen-kotlin/src/commonMain/kotlin/gen/base/ProtocolN4Gen.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private fun apply(element: ProtocolDefinition) {
4747

4848
// abstract N4 functions
4949
for (routine in routines) {
50-
addFunction(funSpec(routine.nameOfFunction()) {
50+
addFunction(funSpec(routine.nameOfBaseFunction()) {
5151
addModifiers(KModifier.ABSTRACT)
5252
addKdoc(createKdocCode(routine))
5353
addParameter("request", FLOW.parameterizedBy(routine.input.className()))
@@ -64,7 +64,7 @@ private fun apply(element: ProtocolDefinition) {
6464

6565
// impl N4 functions
6666
for (routine in routines) {
67-
addFunction(funSpec(routine.nameOfFunction()) {
67+
addFunction(funSpec(routine.nameOfBaseFunction()) {
6868
addModifiers(KModifier.OVERRIDE)
6969
addParameter("request", FLOW.parameterizedBy(routine.input.className()))
7070
returns(FLOW.parameterizedBy(routine.output.className()))
@@ -86,13 +86,13 @@ private fun apply(element: ProtocolDefinition) {
8686
for (routine in routines) {
8787
addStatement("%L", routine.serverRegisterCode(
8888
register = Intrinsics.REGISTER4,
89-
handler = CodeBlock.of("impl::%L", routine.nameOfFunction()),
89+
handler = CodeBlock.of("impl::%L", routine.nameOfBaseFunction()),
9090
))
9191
}
9292
})
9393
// <protocol>.Companion.<routine>.invoke( handler: WrapHandler4<request> )
9494
for (routine in routines) {
95-
addFunction(funSpec(routine.nameOfFunction()) {
95+
addFunction(funSpec(routine.nameOfExtFunction()) {
9696
contextParameter("engine", ServerEngine::class)
9797
receiver(element.generatedClassName().nestedClass("Companion"))
9898
addParameter(

mmrpc-gradle-plugin/src/main/kotlin/MmrpcExtension.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ open class MmrpcExtension {
9494
fun kdocDescription() { features += GenFeature.KDOC_DESCRIPTION }
9595
fun kdocSignature() { features += GenFeature.KDOC_SIGNATURE }
9696

97+
fun pascalCaseRoutineBaseNames() { features += GenFeature.PASCAL_CASE_ROUTINE_BASE_NAMES }
98+
9799
fun keepTypeClassNames() { features += GenFeature.KEEP_TYPE_CLASS_NAMES }
98100
fun keepFaultClassNames() { features += GenFeature.KEEP_FAULT_CLASS_NAMES }
99101
fun keepProtocolClassNames() { features += GenFeature.KEEP_PROTOCOL_CLASS_NAMES }

0 commit comments

Comments
 (0)