@@ -6,12 +6,10 @@ import org.jetbrains.kotlinx.dataframe.DataFrame
6
6
import org.jetbrains.kotlinx.dataframe.RowExpression
7
7
import org.jetbrains.kotlinx.dataframe.columns.ColumnAccessor
8
8
import org.jetbrains.kotlinx.dataframe.columns.ColumnPath
9
- import org.jetbrains.kotlinx.dataframe.impl.api.ColumnToInsert
10
9
import org.jetbrains.kotlinx.dataframe.impl.api.insertImpl
10
+ import org.jetbrains.kotlinx.dataframe.impl.columnName
11
11
import org.jetbrains.kotlinx.dataframe.impl.removeAt
12
-
13
- public fun <T > DataFrame<T>.insert (path : ColumnPath , column : AnyCol ): DataFrame <T > =
14
- insertImpl(this , listOf (ColumnToInsert (path, column)))
12
+ import kotlin.reflect.KProperty
15
13
16
14
public fun <T > DataFrame<T>.insert (column : AnyCol ): InsertClause <T > = InsertClause (this , column)
17
15
@@ -27,19 +25,27 @@ public inline fun <T, reified R> DataFrame<T>.insert(
27
25
noinline expression : RowExpression <T , R >
28
26
): InsertClause <T > = insert(column.name(), infer, expression)
29
27
28
+ public inline fun <T , reified R > DataFrame<T>.insert (
29
+ column : KProperty <R >,
30
+ infer : Infer = Infer .Nulls ,
31
+ noinline expression : RowExpression <T , R >
32
+ ): InsertClause <T > = insert(column.columnName, infer, expression)
33
+
30
34
public data class InsertClause <T >(val df : DataFrame <T >, val column : AnyCol )
31
35
32
36
public fun <T > InsertClause<T>.under (column : ColumnSelector <T , * >): DataFrame <T > = under(df.getColumnPath(column))
33
- public fun <T > InsertClause<T>.under (columnPath : ColumnPath ): DataFrame <T > = df.insert (columnPath + column.name, column)
37
+ public fun <T > InsertClause<T>.under (columnPath : ColumnPath ): DataFrame <T > = df.insertImpl (columnPath + column.name, column)
34
38
public fun <T > InsertClause<T>.under (column : ColumnAccessor <* >): DataFrame <T > = under(column.path())
39
+ public fun <T > InsertClause<T>.under (column : KProperty <* >): DataFrame <T > = under(column.columnName)
35
40
public fun <T > InsertClause<T>.under (column : String ): DataFrame <T > = under(pathOf(column))
36
41
37
42
public fun <T > InsertClause<T>.after (column : ColumnSelector <T , * >): DataFrame <T > = after(df.getColumnPath(column))
38
43
public fun <T > InsertClause<T>.after (column : String ): DataFrame <T > = df.add(this .column).move(this .column).after(column)
39
44
public fun <T > InsertClause<T>.after (column : ColumnAccessor <* >): DataFrame <T > = after(column.path())
45
+ public fun <T > InsertClause<T>.after (column : KProperty <* >): DataFrame <T > = after(column.columnName)
40
46
public fun <T > InsertClause<T>.after (columnPath : ColumnPath ): DataFrame <T > {
41
47
val dstPath = ColumnPath (columnPath.removeAt(columnPath.size - 1 ) + column.name())
42
- return df.insert (dstPath, column).move { dstPath }.after { columnPath }
48
+ return df.insertImpl (dstPath, column).move { dstPath }.after { columnPath }
43
49
}
44
50
45
51
public fun <T > InsertClause<T>.at (position : Int ): DataFrame <T > = df.add(column).move(column).to(position)
0 commit comments