@@ -5,24 +5,70 @@ import org.jetbrains.kotlinx.dataframe.codeGen.CodeGenerator
5
5
import org.jetbrains.kotlinx.dataframe.codeGen.MarkerVisibility
6
6
import org.jetbrains.kotlinx.dataframe.codeGen.NameNormalizer
7
7
import org.jetbrains.kotlinx.dataframe.impl.codeGen.from
8
+ import org.jetbrains.kotlinx.dataframe.schema.DataFrameSchema
9
+
10
+ // region DataFrame
8
11
9
12
public inline fun <reified T > DataFrame<T>.generateCode (
10
13
fields : Boolean = true,
11
14
extensionProperties : Boolean = true,
12
- ): CodeString {
13
- val name = markerName<T >()
14
- return generateCode(name, fields, extensionProperties)
15
- }
15
+ ): CodeString =
16
+ schema().generateCode(
17
+ markerName = markerName<T >(),
18
+ fields = fields,
19
+ extensionProperties = extensionProperties,
20
+ )
16
21
17
22
public fun <T > DataFrame<T>.generateCode (
18
23
markerName : String ,
19
24
fields : Boolean = true,
20
25
extensionProperties : Boolean = true,
21
26
visibility : MarkerVisibility = MarkerVisibility .IMPLICIT_PUBLIC ,
27
+ ): CodeString =
28
+ schema().generateCode(
29
+ markerName = markerName,
30
+ fields = fields,
31
+ extensionProperties = extensionProperties,
32
+ visibility = visibility,
33
+ )
34
+
35
+ public inline fun <reified T > DataFrame<T>.generateInterfaces (): CodeString =
36
+ schema().generateInterfaces(
37
+ markerName = markerName<T >(),
38
+ )
39
+
40
+ public inline fun <reified T > DataFrame<T>.generateDataClasses (
41
+ markerName : String? = null,
42
+ extensionProperties : Boolean = false,
43
+ visibility : MarkerVisibility = MarkerVisibility .IMPLICIT_PUBLIC ,
44
+ useFqNames : Boolean = false,
45
+ nameNormalizer : NameNormalizer = NameNormalizer .default,
46
+ ): CodeString =
47
+ schema().generateDataClasses(
48
+ name = markerName ? : markerName<T >(),
49
+ extensionProperties = extensionProperties,
50
+ visibility = visibility,
51
+ useFqNames = useFqNames,
52
+ nameNormalizer = nameNormalizer,
53
+ )
54
+
55
+ public fun <T > DataFrame<T>.generateInterfaces (markerName : String ): CodeString =
56
+ schema().generateInterfaces(markerName = markerName)
57
+
58
+ // endregion
59
+
60
+ // region DataFrameSchema
61
+
62
+ @JvmName(" generateCodeForSchema" )
63
+ public fun DataFrameSchema.generateCode (
64
+ markerName : String ,
65
+ fields : Boolean = true,
66
+ extensionProperties : Boolean = true,
67
+ visibility : MarkerVisibility = MarkerVisibility .IMPLICIT_PUBLIC ,
22
68
): CodeString {
23
69
val codeGen = CodeGenerator .create()
24
70
return codeGen.generate(
25
- schema = schema() ,
71
+ schema = this ,
26
72
name = markerName,
27
73
fields = fields,
28
74
extensionProperties = extensionProperties,
@@ -31,23 +77,25 @@ public fun <T> DataFrame<T>.generateCode(
31
77
).code.declarations.toCodeString()
32
78
}
33
79
34
- public inline fun <reified T > DataFrame<T>.generateInterfaces (): CodeString =
80
+ @JvmName(" generateInterfacesForSchema" )
81
+ public fun DataFrameSchema.generateInterfaces (markerName : String ): CodeString =
35
82
generateCode(
83
+ markerName = markerName,
36
84
fields = true ,
37
85
extensionProperties = false ,
38
86
)
39
87
40
- public inline fun <reified T > DataFrame<T>.generateDataClasses (
41
- markerName : String? = null,
88
+ @JvmName(" generateDataClassesForSchema" )
89
+ public fun DataFrameSchema.generateDataClasses (
90
+ name : String ,
42
91
extensionProperties : Boolean = false,
43
92
visibility : MarkerVisibility = MarkerVisibility .IMPLICIT_PUBLIC ,
44
93
useFqNames : Boolean = false,
45
94
nameNormalizer : NameNormalizer = NameNormalizer .default,
46
95
): CodeString {
47
- val name = markerName ? : markerName<T >()
48
96
val codeGen = CodeGenerator .create(useFqNames)
49
97
return codeGen.generate(
50
- schema = schema() ,
98
+ schema = this ,
51
99
name = name,
52
100
fields = true ,
53
101
extensionProperties = extensionProperties,
@@ -58,6 +106,8 @@ public inline fun <reified T> DataFrame<T>.generateDataClasses(
58
106
).code.declarations.toCodeString()
59
107
}
60
108
109
+ // endregion
110
+
61
111
@PublishedApi
62
112
internal inline fun <reified T > markerName (): String =
63
113
if (T ::class .isAbstract) {
@@ -66,13 +116,6 @@ internal inline fun <reified T> markerName(): String =
66
116
" DataEntry"
67
117
}
68
118
69
- public fun <T > DataFrame<T>.generateInterfaces (markerName : String ): CodeString =
70
- generateCode(
71
- markerName = markerName,
72
- fields = true ,
73
- extensionProperties = false ,
74
- )
75
-
76
119
/* *
77
120
* Converts delimited 'my_name', 'my name', etc., String to camelCase 'myName'
78
121
*/
0 commit comments