Skip to content

Commit e1c579f

Browse files
committed
apparently, updating from master erased some of the changes...
1 parent 90f7552 commit e1c579f

File tree

2 files changed

+253
-39
lines changed

2 files changed

+253
-39
lines changed

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

Lines changed: 127 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import org.jetbrains.kotlinx.dataframe.Predicate
1414
import org.jetbrains.kotlinx.dataframe.columns.*
1515
import org.jetbrains.kotlinx.dataframe.documentation.AccessApi
1616
import org.jetbrains.kotlinx.dataframe.hasNulls
17-
import org.jetbrains.kotlinx.dataframe.impl.aggregation.toColumns
1817
import org.jetbrains.kotlinx.dataframe.impl.columnName
1918
import org.jetbrains.kotlinx.dataframe.impl.columns.*
2019
import org.jetbrains.kotlinx.dataframe.impl.columns.tree.dfs
@@ -43,6 +42,18 @@ public interface ColumnSelectionDsl<out T> : ColumnsContainer<T> {
4342

4443
public operator fun <C> ColumnPath.invoke(): DataColumn<C> = getColumn(this).cast()
4544

45+
public operator fun <T> KProperty<T>.invoke(): DataColumn<T> = this@ColumnSelectionDsl[this]
46+
47+
public operator fun <T> KProperty<DataRow<T>>.invoke(): ColumnGroup<T> = this@ColumnSelectionDsl[this]
48+
49+
public operator fun <T> KProperty<DataFrame<T>>.invoke(): FrameColumn<T> = this@ColumnSelectionDsl[this]
50+
51+
public operator fun <T, R> KProperty<DataRow<T>>.get(column: KProperty<R>): DataColumn<R> = invoke()[column]
52+
53+
public operator fun <T, R> KProperty<DataRow<T>>.get(column: KProperty<DataRow<R>>): ColumnGroup<R> = invoke()[column]
54+
55+
public operator fun <T, R> KProperty<DataRow<T>>.get(column: KProperty<DataFrame<R>>): FrameColumn<R> = invoke()[column]
56+
4657
public operator fun <C> String.invoke(): DataColumn<C> = getColumn(this).cast()
4758

4859
public operator fun String.get(column: String): ColumnPath = pathOf(this, column)
@@ -69,6 +80,8 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
6980
public operator fun String.rangeTo(endInclusive: String): ColumnSet<*> =
7081
toColumnAccessor().rangeTo(endInclusive.toColumnAccessor())
7182

83+
public operator fun KProperty<*>.rangeTo(endInclusive: KProperty<*>): ColumnSet<*> = toColumnAccessor().rangeTo(endInclusive.toColumnAccessor())
84+
7285
public operator fun AnyColumnReference.rangeTo(endInclusive: AnyColumnReference): ColumnSet<*> =
7386
object : ColumnSet<Any?> {
7487
override fun resolve(context: ColumnResolutionContext): List<ColumnWithPath<Any?>> {
@@ -103,19 +116,19 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
103116
transform { it.flatMap { col -> names.mapNotNull { col.getChild(it) } } }
104117
}
105118

119+
public fun <C> ColumnSet<*>.cols(firstCol: KProperty<C>, vararg otherCols: KProperty<C>): ColumnSet<C> =
120+
(listOf(firstCol) + otherCols).let { names ->
121+
transform { it.flatMap { col -> names.mapNotNull { col.getChild(it) } } }
122+
}
123+
106124
public fun ColumnSet<*>.cols(vararg indices: Int): ColumnSet<Any?> =
107125
transform { it.flatMap { it.children().let { children -> indices.map { children[it] } } } }
108126

109127
public fun ColumnSet<*>.cols(range: IntRange): ColumnSet<Any?> =
110-
transform { it.flatMap { it.children().subList(range.start, range.endInclusive + 1) } }
128+
transform { it.flatMap { it.children().subList(range.first, range.last + 1) } }
111129

112130
// region select
113131

114-
public fun <C> ColumnSet<DataRow<C>>.select(vararg columns: String): ColumnSet<*> = select { columns.toColumnSet() }
115-
116-
public fun <C, R> ColumnSet<DataRow<C>>.select(vararg columns: KProperty<R>): ColumnSet<R> =
117-
select { columns.toColumnSet() }
118-
119132
public fun <C, R> ColumnSet<DataRow<C>>.select(selector: ColumnsSelector<C, R>): ColumnSet<R> = createColumnSet {
120133
this@select.resolve(it).flatMap { group ->
121134
group.asColumnGroup().getColumnsWithPaths(selector).map {
@@ -124,6 +137,12 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
124137
}
125138
}
126139

140+
public fun <C> ColumnSet<DataRow<C>>.select(vararg columns: String): ColumnSet<*> = select { columns.toColumnSet() }
141+
142+
public fun <C, R> ColumnSet<DataRow<C>>.select(vararg columns: ColumnReference<R>): ColumnSet<R> = select { columns.toColumnSet() }
143+
144+
public fun <C, R> ColumnSet<DataRow<C>>.select(vararg columns: KProperty<R>): ColumnSet<R> = select { columns.toColumnSet() }
145+
127146
// endregion
128147

129148
// endregion
@@ -134,6 +153,8 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
134153

135154
public fun String.dfs(predicate: (ColumnWithPath<*>) -> Boolean): ColumnSet<*> = toColumnAccessor().dfs(predicate)
136155

156+
public fun <C> KProperty<C>.dfs(predicate: (ColumnWithPath<*>) -> Boolean): ColumnSet<*> = toColumnAccessor().dfs(predicate)
157+
137158
// endregion
138159

139160
// region all
@@ -142,13 +163,17 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
142163

143164
public fun String.all(): ColumnSet<*> = toColumnAccessor().transformSingle { it.children() }
144165

166+
public fun KProperty<*>.all(): ColumnSet<*> = toColumnAccessor().transformSingle { it.children() }
167+
145168
// region allDfs
146169

147170
public fun ColumnSet<*>.allDfs(includeGroups: Boolean = false): ColumnSet<Any?> =
148171
if (includeGroups) dfs { true } else dfs { !it.isColumnGroup() }
149172

150173
public fun String.allDfs(includeGroups: Boolean = false): ColumnSet<Any?> = toColumnAccessor().allDfs(includeGroups)
151174

175+
public fun KProperty<*>.allDfs(includeGroups: Boolean = false): ColumnSet<Any?> = toColumnAccessor().allDfs(includeGroups)
176+
152177
// endregion
153178

154179
// region allAfter
@@ -167,13 +192,24 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
167192

168193
public fun SingleColumn<*>.allAfter(colName: String): ColumnSet<Any?> = allAfter(pathOf(colName))
169194
public fun SingleColumn<*>.allAfter(column: AnyColumnReference): ColumnSet<Any?> = allAfter(column.path())
195+
public fun SingleColumn<*>.allAfter(column: KProperty<*>): ColumnSet<Any?> = allAfter(column.toColumnAccessor().path())
196+
197+
public fun String.allAfter(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allAfter(colPath)
198+
public fun String.allAfter(colName: String): ColumnSet<Any?> = toColumnAccessor().allAfter(colName)
199+
public fun String.allAfter(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allAfter(column)
200+
public fun String.allAfter(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allAfter(column)
201+
202+
public fun KProperty<*>.allAfter(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allAfter(colPath)
203+
public fun KProperty<*>.allAfter(colName: String): ColumnSet<Any?> = toColumnAccessor().allAfter(colName)
204+
public fun KProperty<*>.allAfter(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allAfter(column)
205+
public fun KProperty<*>.allAfter(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allAfter(column)
170206

171207
// endregion
172208

173-
// region allSince
209+
// region allFrom
174210

175211
// including current
176-
public fun SingleColumn<*>.allSince(colPath: ColumnPath): ColumnSet<Any?> {
212+
public fun SingleColumn<*>.allFrom(colPath: ColumnPath): ColumnSet<Any?> {
177213
var take = false
178214
return children {
179215
if (take) true
@@ -184,8 +220,19 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
184220
}
185221
}
186222

187-
public fun SingleColumn<*>.allSince(colName: String): ColumnSet<Any?> = allSince(pathOf(colName))
188-
public fun SingleColumn<*>.allSince(column: AnyColumnReference): ColumnSet<Any?> = allSince(column.path())
223+
public fun SingleColumn<*>.allFrom(colName: String): ColumnSet<Any?> = allFrom(pathOf(colName))
224+
public fun SingleColumn<*>.allFrom(column: AnyColumnReference): ColumnSet<Any?> = allFrom(column.path())
225+
public fun SingleColumn<*>.allFrom(column: KProperty<*>): ColumnSet<Any?> = allFrom(column.toColumnAccessor().path())
226+
227+
public fun String.allFrom(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allFrom(colPath)
228+
public fun String.allFrom(colName: String): ColumnSet<Any?> = toColumnAccessor().allFrom(colName)
229+
public fun String.allFrom(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allFrom(column)
230+
public fun String.allFrom(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allFrom(column)
231+
232+
public fun KProperty<*>.allFrom(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allFrom(colPath)
233+
public fun KProperty<*>.allFrom(colName: String): ColumnSet<Any?> = toColumnAccessor().allFrom(colName)
234+
public fun KProperty<*>.allFrom(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allFrom(column)
235+
public fun KProperty<*>.allFrom(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allFrom(column)
189236

190237
// endregion
191238

@@ -205,13 +252,24 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
205252

206253
public fun SingleColumn<*>.allBefore(colName: String): ColumnSet<Any?> = allBefore(pathOf(colName))
207254
public fun SingleColumn<*>.allBefore(column: AnyColumnReference): ColumnSet<Any?> = allBefore(column.path())
255+
public fun SingleColumn<*>.allBefore(column: KProperty<*>): ColumnSet<Any?> = allBefore(column.toColumnAccessor().path())
256+
257+
public fun String.allBefore(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allBefore(colPath)
258+
public fun String.allBefore(colName: String): ColumnSet<Any?> = toColumnAccessor().allBefore(colName)
259+
public fun String.allBefore(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allBefore(column)
260+
public fun String.allBefore(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allBefore(column)
261+
262+
public fun KProperty<*>.allBefore(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allBefore(colPath)
263+
public fun KProperty<*>.allBefore(colName: String): ColumnSet<Any?> = toColumnAccessor().allBefore(colName)
264+
public fun KProperty<*>.allBefore(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allBefore(column)
265+
public fun KProperty<*>.allBefore(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allBefore(column)
208266

209267
// endregion
210268

211-
// region allUntil
269+
// region allUpTo
212270

213271
// including current
214-
public fun SingleColumn<*>.allUntil(colPath: ColumnPath): ColumnSet<Any?> {
272+
public fun SingleColumn<*>.allUpTo(colPath: ColumnPath): ColumnSet<Any?> {
215273
var take = true
216274
return children {
217275
if (!take) false
@@ -222,21 +280,46 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
222280
}
223281
}
224282

225-
public fun SingleColumn<*>.allUntil(colName: String): ColumnSet<Any?> = allUntil(pathOf(colName))
226-
public fun SingleColumn<*>.allUntil(column: AnyColumnReference): ColumnSet<Any?> = allUntil(column.path())
283+
public fun SingleColumn<*>.allUpTo(colName: String): ColumnSet<Any?> = allUpTo(pathOf(colName))
284+
public fun SingleColumn<*>.allUpTo(column: AnyColumnReference): ColumnSet<Any?> = allUpTo(column.path())
285+
public fun SingleColumn<*>.allUpTo(column: KProperty<*>): ColumnSet<Any?> = allUpTo(column.toColumnAccessor().path())
286+
287+
public fun String.allUpTo(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allUpTo(colPath)
288+
public fun String.allUpTo(colName: String): ColumnSet<Any?> = toColumnAccessor().allUpTo(colName)
289+
public fun String.allUpTo(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allUpTo(column)
290+
public fun String.allUpTo(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allUpTo(column)
291+
292+
public fun KProperty<*>.allUpTo(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allUpTo(colPath)
293+
public fun KProperty<*>.allUpTo(colName: String): ColumnSet<Any?> = toColumnAccessor().allUpTo(colName)
294+
public fun KProperty<*>.allUpTo(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allUpTo(column)
295+
public fun KProperty<*>.allUpTo(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allUpTo(column)
227296

228297
// endregion
229298

230299
// endregion
231300

301+
// region groups
302+
232303
public fun SingleColumn<*>.groups(filter: (ColumnGroup<*>) -> Boolean = { true }): ColumnSet<AnyRow> =
233304
children { it.isColumnGroup() && filter(it.asColumnGroup()) } as ColumnSet<AnyRow>
234305

235-
public fun <C> ColumnSet<C>.children(predicate: (ColumnWithPath<Any?>) -> Boolean = { true }): ColumnSet<Any?> =
306+
public fun String.groups(filter: (ColumnGroup<*>) -> Boolean = { true }): ColumnSet<AnyRow> =
307+
toColumnAccessor().groups(filter)
308+
309+
public fun KProperty<*>.groups(filter: (ColumnGroup<*>) -> Boolean = { true }): ColumnSet<AnyRow> =
310+
toColumnAccessor().groups(filter)
311+
312+
// endregion
313+
314+
// region children
315+
316+
public fun ColumnSet<*>.children(predicate: (ColumnWithPath<Any?>) -> Boolean = { true }): ColumnSet<Any?> =
236317
transform { it.flatMap { it.children().filter { predicate(it) } } }
237318

238319
public fun ColumnGroupReference.children(): ColumnSet<Any?> = transformSingle { it.children() }
239320

321+
// endregion
322+
240323
public operator fun <C> List<DataColumn<C>>.get(range: IntRange): ColumnSet<C> =
241324
ColumnsList(subList(range.first, range.last + 1))
242325

@@ -246,6 +329,7 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
246329
transform { it.mapNotNull { it.getChild(colName) } }
247330

248331
public operator fun <C> ColumnSet<*>.get(column: ColumnReference<C>): ColumnSet<C> = cols(column)
332+
public operator fun <C> ColumnSet<*>.get(column: KProperty<C>): ColumnSet<C> = cols(column)
249333

250334
public fun SingleColumn<AnyRow>.take(n: Int): ColumnSet<*> = transformSingle { it.children().take(n) }
251335
public fun SingleColumn<AnyRow>.takeLast(n: Int): ColumnSet<*> = transformSingle { it.children().takeLast(n) }
@@ -271,7 +355,7 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
271355
public fun ColumnSet<*>.startsWith(prefix: CharSequence): ColumnSet<Any?> = cols { it.name.startsWith(prefix) }
272356
public fun ColumnSet<*>.endsWith(suffix: CharSequence): ColumnSet<Any?> = cols { it.name.endsWith(suffix) }
273357

274-
public fun <C> ColumnSet<C>.except(vararg other: ColumnSet<*>): ColumnSet<*> = except(other.toColumns())
358+
public fun <C> ColumnSet<C>.except(vararg other: ColumnSet<*>): ColumnSet<*> = except(other.toColumnSet())
275359
public fun <C> ColumnSet<C>.except(vararg other: String): ColumnSet<*> = except(other.toColumnSet())
276360

277361
public fun <C> ColumnSet<C?>.withoutNulls(): ColumnSet<C> = transform { it.filter { !it.hasNulls } } as ColumnSet<C>
@@ -280,7 +364,7 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
280364
createColumnSet { resolve(it).allColumnsExcept(other.resolve(it)) }
281365

282366
public infix fun <C> ColumnSet<C>.except(selector: ColumnsSelector<T, *>): ColumnSet<C> =
283-
except(selector.toColumns()) as ColumnSet<C>
367+
except(selector.toColumnSet()) as ColumnSet<C>
284368

285369
public operator fun <C> ColumnsSelector<T, C>.invoke(): ColumnSet<C> =
286370
this(this@ColumnsSelectionDsl, this@ColumnsSelectionDsl)
@@ -297,9 +381,18 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
297381
toColumnAccessor().into(column.columnName)
298382

299383
public infix fun <C> ColumnReference<C>.named(newName: String): ColumnReference<C> = renamedReference(newName)
300-
public infix fun <C> ColumnReference<C>.named(name: KProperty<*>): ColumnReference<C> = named(name.columnName)
384+
public infix fun <C> ColumnReference<C>.named(nameFrom: ColumnReference<*>): ColumnReference<C> = named(nameFrom.name)
385+
public infix fun <C> ColumnReference<C>.named(nameFrom: KProperty<*>): ColumnReference<C> = named(nameFrom.columnName)
301386

302387
public infix fun String.named(newName: String): ColumnReference<Any?> = toColumnAccessor().named(newName)
388+
public infix fun String.named(nameFrom: ColumnReference<*>): ColumnReference<Any?> = toColumnAccessor().named(nameFrom.name)
389+
public infix fun String.named(nameFrom: KProperty<*>): ColumnReference<Any?> = toColumnAccessor().named(nameFrom.columnName)
390+
391+
public infix fun <C> KProperty<C>.named(newName: String): ColumnReference<C> = toColumnAccessor().named(newName)
392+
393+
public infix fun <C> KProperty<C>.named(nameFrom: ColumnReference<*>): ColumnReference<C> = toColumnAccessor().named(nameFrom.name)
394+
395+
public infix fun <C> KProperty<C>.named(nameFrom: KProperty<*>): ColumnReference<C> = toColumnAccessor().named(nameFrom.columnName)
303396

304397
// region and
305398

@@ -340,6 +433,21 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
340433
// endregion
341434

342435
public fun <C> ColumnSet<C>.distinct(): ColumnSet<C> = DistinctColumnSet(this)
436+
437+
public fun <C> String.dfsOf(type: KType, predicate: (ColumnWithPath<C>) -> Boolean = { true }): ColumnSet<*> =
438+
toColumnAccessor().dfsOf(type, predicate)
439+
440+
public fun <C> KProperty<*>.dfsOf(type: KType, predicate: (ColumnWithPath<C>) -> Boolean = { true }): ColumnSet<*> =
441+
toColumnAccessor().dfsOf(type, predicate)
442+
443+
public fun String.colsOf(type: KType): ColumnSet<Any?> = toColumnAccessor().colsOf(type)
444+
public fun KProperty<*>.colsOf(type: KType): ColumnSet<Any?> = toColumnAccessor().colsOf(type)
445+
446+
public fun <C> String.colsOf(type: KType, filter: (DataColumn<C>) -> Boolean): ColumnSet<Any?> =
447+
toColumnAccessor().colsOf(type, filter)
448+
449+
public fun <C> KProperty<*>.colsOf(type: KType, filter: (DataColumn<C>) -> Boolean): ColumnSet<Any?> =
450+
toColumnAccessor().colsOf(type, filter)
343451
}
344452

345453
public inline fun <T, reified R> ColumnsSelectionDsl<T>.expr(
@@ -350,7 +458,6 @@ public inline fun <T, reified R> ColumnsSelectionDsl<T>.expr(
350458

351459
internal fun <T, C> ColumnsSelector<T, C>.filter(predicate: (ColumnWithPath<C>) -> Boolean): ColumnsSelector<T, C> =
352460
{ this@filter(it, it).filter(predicate) }
353-
// internal fun Columns<*>.filter(predicate: (AnyCol) -> Boolean) = transform { it.filter { predicate(it.data) } }
354461

355462
internal fun ColumnSet<*>.colsInternal(predicate: (AnyCol) -> Boolean) =
356463
transform { it.flatMap { it.children().filter { predicate(it.data) } } }

0 commit comments

Comments
 (0)