Skip to content

Commit 13ac0db

Browse files
committed
small additions and fixes
1 parent 845e6cd commit 13ac0db

File tree

10 files changed

+301
-175
lines changed

10 files changed

+301
-175
lines changed

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/ColumnsContainer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public interface ColumnsContainer<out T> {
6060
public operator fun <R> get(column: KProperty<DataRow<R>>): ColumnGroup<R> = get(column.columnName).asColumnGroup().cast()
6161
public operator fun <R> get(column: KProperty<DataFrame<R>>): FrameColumn<R> = get(column.columnName).asAnyFrameColumn().castFrameColumn()
6262

63-
public operator fun <C> get(columns: ColumnsSelector<T, C>): List<DataColumn<C>>
63+
public fun <C> get(columns: ColumnsSelector<T, C>): List<DataColumn<C>>
6464
public operator fun <C> get(column: ColumnSelector<T, C>): DataColumn<C> = get(column as ColumnsSelector<T, C>).single()
6565

6666
// endregion

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl.kt

Lines changed: 128 additions & 83 deletions
Large diffs are not rendered by default.

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/columns/ColumnGroupWithParent.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ internal class ColumnGroupWithParent<T>(override val parent: ColumnGroupReferenc
4141
override fun getColumnOrNull(index: Int) = super.getColumnOrNull(index)?.addParent(this)
4242
override fun getColumnOrNull(name: String) = super.getColumnOrNull(name)?.addParent(this)
4343
override fun <R> getColumnOrNull(column: ColumnReference<R>) = super.getColumnOrNull(column)?.addParent(this)
44-
override fun getColumnOrNull(path: ColumnPath) = path.fold(this as AnyCol?) { col, name -> col?.asColumnGroup()?.getColumnOrNull(name) }
44+
override fun getColumnOrNull(path: ColumnPath) = path.fold(this as AnyCol?) { col, name ->
45+
col?.asColumnGroup()?.getColumnOrNull(name)
46+
}
4547
override fun <R> getColumnOrNull(column: ColumnSelector<T, R>) = getColumnOrNull(getColumnWithPath(column).path)?.cast<R>()
4648

4749
override operator fun get(columnName: String): AnyCol = getColumn(columnName)

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/columns/Utils.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,11 @@ internal fun <A, B> ColumnSet<A>.transform(converter: (List<ColumnWithPath<A>>)
104104
override fun resolve(context: ColumnResolutionContext) = converter(this@transform.resolve(context))
105105
}
106106

107+
internal fun <A, B> ColumnSet<A>.transformWithContext(converter: ColumnResolutionContext.(List<ColumnWithPath<A>>) -> List<ColumnWithPath<B>>): ColumnSet<B> =
108+
object : ColumnSet<B> {
109+
override fun resolve(context: ColumnResolutionContext) = converter(context, this@transformWithContext.resolve(context))
110+
}
111+
107112
internal fun <T> ColumnSet<T>.singleImpl() = object : SingleColumn<T> {
108113
override fun resolveSingle(context: ColumnResolutionContext): ColumnWithPath<T>? {
109114
return this@singleImpl.resolve(context).singleOrNull()

core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/ColumnsSelectionDsl.kt

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ class ColumnsSelectionDslTests : TestBase() {
4343
it.any { it == "Alice" }
4444
}
4545
} shouldBe df.select { name.firstName }
46+
47+
df.select {
48+
pathOf("name").first {
49+
it.any { it == "Alice" }
50+
}
51+
} shouldBe df.select { name.firstName }
4652
}
4753

4854
@Test
@@ -72,6 +78,12 @@ class ColumnsSelectionDslTests : TestBase() {
7278
it.any { it == "Alice" }
7379
}
7480
} shouldBe df.select { name.firstName }
81+
82+
df.select {
83+
pathOf("name").last {
84+
it.any { it == "Alice" }
85+
}
86+
} shouldBe df.select { name.firstName }
7587
}
7688

7789
@Test
@@ -103,6 +115,12 @@ class ColumnsSelectionDslTests : TestBase() {
103115
it.any { it == "Alice" }
104116
}
105117
} shouldBe df.select { name.firstName }
118+
119+
df.select {
120+
pathOf("name").single {
121+
it.any { it == "Alice" }
122+
}
123+
} shouldBe df.select { name.firstName }
106124
}
107125

108126
@Test
@@ -145,8 +163,6 @@ class ColumnsSelectionDslTests : TestBase() {
145163
.asColumnGroup(firstNames)
146164
}
147165

148-
dfGroup.print(columnTypes = true, title = true)
149-
150166
dfGroup.select { colGroup("name") } shouldBe dfGroup.select { name }
151167
dfGroup.select { colGroup<String>("name") } shouldBe dfGroup.select { name }
152168
dfGroup.select { colGroup(pathOf("name")) } shouldBe dfGroup.select { name }
@@ -158,6 +174,12 @@ class ColumnsSelectionDslTests : TestBase() {
158174
dfGroup.select { colGroup("name").colGroup(pathOf("firstNames")) } shouldBe dfGroup.select { name[firstNames] }
159175
dfGroup.select { colGroup("name").colGroup<String>(pathOf("firstNames")) } shouldBe dfGroup.select { name[firstNames] }
160176
dfGroup.select { colGroup("name").colGroup(MyName::firstNames) } shouldBe dfGroup.select { name[firstNames] }
177+
178+
dfGroup.select {
179+
"name"["firstNames"]["firstName", "secondName"]
180+
} shouldBe dfGroup.select {
181+
name[firstNames]["firstName"] and name[firstNames]["secondName"]
182+
}
161183
}
162184

163185
@DataSchema

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/ColumnsContainer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public interface ColumnsContainer<out T> {
6060
public operator fun <R> get(column: KProperty<DataRow<R>>): ColumnGroup<R> = get(column.columnName).asColumnGroup().cast()
6161
public operator fun <R> get(column: KProperty<DataFrame<R>>): FrameColumn<R> = get(column.columnName).asAnyFrameColumn().castFrameColumn()
6262

63-
public operator fun <C> get(columns: ColumnsSelector<T, C>): List<DataColumn<C>>
63+
public fun <C> get(columns: ColumnsSelector<T, C>): List<DataColumn<C>>
6464
public operator fun <C> get(column: ColumnSelector<T, C>): DataColumn<C> = get(column as ColumnsSelector<T, C>).single()
6565

6666
// endregion

0 commit comments

Comments
 (0)