@@ -3,15 +3,19 @@ package org.jetbrains.kotlinx.dataframe.api
3
3
import org.jetbrains.kotlinx.dataframe.AnyFrame
4
4
import org.jetbrains.kotlinx.dataframe.ColumnsSelector
5
5
import org.jetbrains.kotlinx.dataframe.DataFrame
6
+ import org.jetbrains.kotlinx.dataframe.columns.ColumnAccessor
6
7
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
7
8
import org.jetbrains.kotlinx.dataframe.columns.ColumnWithPath
8
9
import org.jetbrains.kotlinx.dataframe.impl.DELIMITED_STRING_REGEX
9
10
import org.jetbrains.kotlinx.dataframe.impl.DELIMITERS_REGEX
11
+ import org.jetbrains.kotlinx.dataframe.impl.columnName
10
12
import org.jetbrains.kotlinx.dataframe.impl.columns.toColumnSet
11
13
import org.jetbrains.kotlinx.dataframe.impl.columns.toColumns
12
14
import org.jetbrains.kotlinx.dataframe.impl.toCamelCaseByDelimiters
13
15
import kotlin.reflect.KProperty
14
16
17
+ // region DataFrame
18
+
15
19
public fun <T > DataFrame<T>.rename (vararg mappings : Pair <String , String >): DataFrame <T > =
16
20
rename { mappings.map { it.first.toColumnAccessor() }.toColumnSet() }
17
21
.into(* mappings.map { it.second }.toTypedArray())
@@ -54,3 +58,20 @@ public fun <T, C> RenameClause<T, C>.into(transform: (ColumnWithPath<C>) -> Stri
54
58
55
59
public fun <T , C > RenameClause <T , C >.toCamelCase (): DataFrame <T > =
56
60
into { it.name().toCamelCaseByDelimiters(DELIMITERS_REGEX ) }
61
+
62
+ // endregion
63
+
64
+ // region DataColumn
65
+
66
+ public fun <T , C : ColumnReference <T >> C.rename (column : KProperty <T >): C = rename(column.columnName) as C
67
+ public fun <T , C : ColumnReference <T >> C.rename (column : ColumnAccessor <T >): C = rename(column.name()) as C
68
+
69
+ // endregion
70
+
71
+ // region named
72
+
73
+ public infix fun <T , C : ColumnReference <T >> C.named (name : String ): C = rename(name) as C
74
+ public infix fun <T , C : ColumnReference <T >> C.named (name : KProperty <* >): C = rename(name)
75
+ public infix fun <T , C : ColumnReference <T >> C.named (name : ColumnAccessor <* >): C = rename(name)
76
+
77
+ // endregion
0 commit comments