Skip to content

Commit 4fec667

Browse files
committed
Add missing overloads for insert
1 parent 39ccdb3 commit 4fec667

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/add.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnAccessor
1212
import org.jetbrains.kotlinx.dataframe.columns.ColumnPath
1313
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
1414
import org.jetbrains.kotlinx.dataframe.impl.DataRowImpl
15+
import org.jetbrains.kotlinx.dataframe.impl.api.insertImpl
1516
import org.jetbrains.kotlinx.dataframe.impl.columns.resolveSingle
1617
import org.jetbrains.kotlinx.dataframe.index
1718
import kotlin.reflect.KProperty
@@ -60,7 +61,7 @@ public inline fun <reified R, T> DataFrame<T>.add(
6061
): DataFrame<T> {
6162
val col = map(path.name(), infer, expression)
6263
if (path.size == 1) return this + col
63-
return insert(path, col)
64+
return insertImpl(path, col)
6465
}
6566

6667
public fun <T> DataFrame<T>.add(body: AddDsl<T>.() -> Unit): DataFrame<T> {

src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/insert.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@ import org.jetbrains.kotlinx.dataframe.DataFrame
66
import org.jetbrains.kotlinx.dataframe.RowExpression
77
import org.jetbrains.kotlinx.dataframe.columns.ColumnAccessor
88
import org.jetbrains.kotlinx.dataframe.columns.ColumnPath
9-
import org.jetbrains.kotlinx.dataframe.impl.api.ColumnToInsert
109
import org.jetbrains.kotlinx.dataframe.impl.api.insertImpl
10+
import org.jetbrains.kotlinx.dataframe.impl.columnName
1111
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
1513

1614
public fun <T> DataFrame<T>.insert(column: AnyCol): InsertClause<T> = InsertClause(this, column)
1715

@@ -27,19 +25,27 @@ public inline fun <T, reified R> DataFrame<T>.insert(
2725
noinline expression: RowExpression<T, R>
2826
): InsertClause<T> = insert(column.name(), infer, expression)
2927

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+
3034
public data class InsertClause<T>(val df: DataFrame<T>, val column: AnyCol)
3135

3236
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)
3438
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)
3540
public fun <T> InsertClause<T>.under(column: String): DataFrame<T> = under(pathOf(column))
3641

3742
public fun <T> InsertClause<T>.after(column: ColumnSelector<T, *>): DataFrame<T> = after(df.getColumnPath(column))
3843
public fun <T> InsertClause<T>.after(column: String): DataFrame<T> = df.add(this.column).move(this.column).after(column)
3944
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)
4046
public fun <T> InsertClause<T>.after(columnPath: ColumnPath): DataFrame<T> {
4147
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 }
4349
}
4450

4551
public fun <T> InsertClause<T>.at(position: Int): DataFrame<T> = df.add(column).move(column).to(position)

src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/insert.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.jetbrains.kotlinx.dataframe.impl.api
22

33
import org.jetbrains.kotlinx.dataframe.AnyBaseColumn
4+
import org.jetbrains.kotlinx.dataframe.AnyCol
45
import org.jetbrains.kotlinx.dataframe.DataColumn
56
import org.jetbrains.kotlinx.dataframe.DataFrame
67
import org.jetbrains.kotlinx.dataframe.api.cast
@@ -18,6 +19,10 @@ internal data class ColumnToInsert(
1819
val referenceNode: ReadonlyTreeNode<ReferenceData>? = null
1920
)
2021

22+
@PublishedApi
23+
internal fun <T> DataFrame<T>.insertImpl(path: ColumnPath, column: AnyCol): DataFrame<T> =
24+
insertImpl(this, listOf(ColumnToInsert(path, column)))
25+
2126
@JvmName("insertImplT")
2227
internal fun <T> DataFrame<T>.insertImpl(columns: List<ColumnToInsert>) =
2328
insertImpl(this, columns)

0 commit comments

Comments
 (0)