@@ -7,7 +7,7 @@ import org.jetbrains.kotlinx.dataframe.codeGen.MarkerVisibility
77public inline fun <reified T > DataFrame<T>.generateCode (
88 fields : Boolean = true,
99 extensionProperties : Boolean = true,
10- ): String {
10+ ): CodeString {
1111 val name = markerName<T >()
1212 return generateCode(name, fields, extensionProperties)
1313}
@@ -17,7 +17,7 @@ public fun <T> DataFrame<T>.generateCode(
1717 fields : Boolean = true,
1818 extensionProperties : Boolean = true,
1919 visibility : MarkerVisibility = MarkerVisibility .IMPLICIT_PUBLIC ,
20- ): String {
20+ ): CodeString {
2121 val codeGen = CodeGenerator .create()
2222 return codeGen.generate(
2323 schema = schema(),
@@ -26,10 +26,10 @@ public fun <T> DataFrame<T>.generateCode(
2626 extensionProperties = extensionProperties,
2727 isOpen = true ,
2828 visibility = visibility,
29- ).code.declarations
29+ ).code.declarations.toCodeString()
3030}
3131
32- public inline fun <reified T > DataFrame<T>.generateInterfaces (): String = generateCode(
32+ public inline fun <reified T > DataFrame<T>.generateInterfaces (): CodeString = generateCode(
3333 fields = true ,
3434 extensionProperties = false
3535)
@@ -39,7 +39,7 @@ public inline fun <reified T> DataFrame<T>.generateDataClasses(
3939 extensionProperties : Boolean = true,
4040 visibility : MarkerVisibility = MarkerVisibility .IMPLICIT_PUBLIC ,
4141 useFqNames : Boolean = false
42- ): String {
42+ ): CodeString {
4343 val name = markerName ? : markerName<T >()
4444 val codeGen = CodeGenerator .create(useFqNames)
4545 return codeGen.generate(
@@ -51,15 +51,29 @@ public inline fun <reified T> DataFrame<T>.generateDataClasses(
5151 visibility = visibility,
5252 asDataClass = true
5353 ).code.declarations
54+ ).code.declarations.toCodeString()
5455}
5556
5657@PublishedApi
5758internal inline fun <reified T > markerName (): String = if (T ::class .isAbstract) {
5859 T ::class .simpleName!!
5960} else " DataEntry"
6061
61- public fun <T > DataFrame<T>.generateInterfaces (markerName : String ): String = generateCode(
62+ public fun <T > DataFrame<T>.generateInterfaces (markerName : String ): CodeString = generateCode(
6263 markerName = markerName,
6364 fields = true ,
6465 extensionProperties = false
6566)
67+
68+ /* *
69+ * Converts delimited 'my_name', 'my name', etc, String to camelCase 'myName'
70+ */
71+ public val NameNormalizer .Companion .default: NameNormalizer get() = NameNormalizer .from(setOf (' \t ' , ' ' , ' _' ))
72+
73+ @JvmInline
74+ public value class CodeString (public val value : String ) {
75+ override fun toString (): String = value
76+ }
77+
78+ @PublishedApi
79+ internal fun String.toCodeString (): CodeString = CodeString (this )
0 commit comments