Skip to content

Commit 710d72f

Browse files
committed
support snippet outputs with korro
1 parent d13b26a commit 710d72f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+49
-180
lines changed

core/build.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import com.google.devtools.ksp.gradle.KspTaskJvm
22
import com.google.devtools.ksp.gradle.KspTask
3+
import io.github.devcrocod.korro.KorroTask
34
import nl.jolanrensen.docProcessor.defaultProcessors.*
45
import nl.jolanrensen.docProcessor.gradle.creatingProcessDocTask
56
import org.gradle.jvm.tasks.Jar
@@ -103,6 +104,7 @@ val samplesTest = tasks.register<Test>("samplesTest") {
103104
doFirst {
104105
delete {
105106
delete(fileTree(File(buildDir, "dataframes")))
107+
delete(fileTree(File(buildDir, "korroOutputLines")))
106108
}
107109
}
108110

@@ -137,6 +139,10 @@ val copySamplesOutputs = tasks.register<JavaExec>("copySamplesOutputs") {
137139
classpath = sourceSets.test.get().runtimeClasspath
138140
}
139141

142+
tasks.withType<KorroTask> {
143+
dependsOn(copySamplesOutputs)
144+
}
145+
140146
val generatedSourcesFolderName = "generated-sources"
141147
val addGeneratedSourcesToGit by tasks.creating(GitTask::class) {
142148
directory.set(file("."))
@@ -217,6 +223,10 @@ korro {
217223
include("src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/*.kt")
218224
}
219225

226+
outputs = fileTree(project.buildDir) {
227+
include("korroOutputLines/*")
228+
}
229+
220230
groupSamples {
221231

222232
beforeSample.set("<tab title=\"NAME\">\n")

core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,17 @@ object PluginCallbackProxy : PluginCallback {
130130
it.mkdirs()
131131
}
132132
output.writeHTML(File(destination, "$name.html"))
133+
val korro = File("build/korroOutputLines").also {
134+
it.mkdirs()
135+
}
136+
137+
val group = name.substringBefore("_")
138+
File(korro, group).writeText(
139+
"""
140+
141+
<dataFrame src="$group.html"/>
142+
""".trimIndent()
143+
)
133144
}
134145

135146
private fun statementOutput(

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,17 @@ object PluginCallbackProxy : PluginCallback {
130130
it.mkdirs()
131131
}
132132
output.writeHTML(File(destination, "$name.html"))
133+
val korro = File("build/korroOutputLines").also {
134+
it.mkdirs()
135+
}
136+
137+
val group = name.substringBefore("_")
138+
File(korro, group).writeText(
139+
"""
140+
141+
<dataFrame src="$group.html"/>
142+
""".trimIndent()
143+
)
133144
}
134145

135146
private fun statementOutput(

docs/StardustDocs/topics/ColumnSelectors.md

Lines changed: 13 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -57,39 +57,6 @@ df.select { name.all() }
5757
df.select { name.allDfs() }
5858
```
5959

60-
</tab>
61-
<tab title="Strings">
62-
63-
```kotlin
64-
// by column name
65-
df.select { it["name"] }
66-
67-
// by column path
68-
df.select { it["name"]["firstName"] }
69-
df.select { "name"["firstName"] }
70-
71-
// with a new name
72-
df.select { "name" named "Full Name" }
73-
74-
// converted
75-
df.select { "name"["firstName"]<String>().map { it.uppercase() } }
76-
77-
// column arithmetics
78-
df.select { 2021 - "age"<Int>() }
79-
80-
// two columns
81-
df.select { "name" and "age" }
82-
83-
// by range of names
84-
df.select { "name".."age" }
85-
86-
// all children of ColumnGroup
87-
df.select { "name".all() }
88-
89-
// depth-first-search traversal of all children columns
90-
df.select { "name".allDfs() }
91-
```
92-
9360
</tab>
9461
<tab title="Accessors">
9562

@@ -127,42 +94,39 @@ df.select { name.allDfs() }
12794
```
12895

12996
</tab>
130-
<tab title="KProperties">
97+
<tab title="Strings">
13198

13299
```kotlin
133100
// by column name
134-
df.select { it[Person::name] }
135-
df.select { (Person::name)() }
136-
df.select { col(Person::name) }
101+
df.select { it["name"] }
137102

138103
// by column path
139-
df.select { it[Person::name][Name::firstName] }
140-
df.select { Person::name[Name::firstName] }
104+
df.select { it["name"]["firstName"] }
105+
df.select { "name"["firstName"] }
141106

142107
// with a new name
143-
df.select { Person::name named "Full Name" }
108+
df.select { "name" named "Full Name" }
144109

145110
// converted
146-
df.select { Person::name[Name::firstName].map { it.lowercase() } }
111+
df.select { "name"["firstName"]<String>().map { it.uppercase() } }
147112

148113
// column arithmetics
149-
df.select { 2021 - (Person::age)() }
114+
df.select { 2021 - "age"<Int>() }
150115

151116
// two columns
152-
df.select { Person::name and Person::age }
117+
df.select { "name" and "age" }
153118

154-
// range of columns
155-
df.select { Person::name..Person::age }
119+
// by range of names
120+
df.select { "name".."age" }
156121

157122
// all children of ColumnGroup
158-
df.select { Person::name.all() }
123+
df.select { "name".all() }
159124

160125
// depth-first-search traversal of all children columns
161-
df.select { Person::name.allDfs() }
126+
df.select { "name".allDfs() }
162127
```
163128

164-
</tab>
165-
</tabs>
129+
</tab></tabs>
166130
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Access.columnSelectors.html"/>
167131
<!---END-->
168132

docs/StardustDocs/topics/DataColumn.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ df.add("year of birth") { 2021 - age }
6262
df.filter { age > 30 }
6363
```
6464

65-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Create.columnAccessorsUsage.html"/>
6665
<!---END-->
6766

6867
[Column accessors](DataColumn.md#column-accessors) are created by [property delegate](https://kotlinlang.org/docs/delegated-properties.html) `column`. Column [`type`](DataColumn.md#properties) should be passed as type argument, column [`name`](DataColumn.md#properties) will be taken from the variable name.
@@ -73,7 +72,6 @@ df.filter { age > 30 }
7372
val name by column<String>()
7473
```
7574

76-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Create.createColumnAccessor.html"/>
7775
<!---END-->
7876

7977
To assign column name explicitly, pass it as an argument.
@@ -84,7 +82,6 @@ To assign column name explicitly, pass it as an argument.
8482
val accessor by column<String>("complex column name")
8583
```
8684

87-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Create.createColumnAccessorRenamed.html"/>
8885
<!---END-->
8986

9087
You can also create column accessors for [ColumnGroups](DataColumn.md#columngroup) and [FrameColumns](DataColumn.md#framecolumn)
@@ -96,7 +93,6 @@ val columns by columnGroup()
9693
val frames by frameColumn()
9794
```
9895

99-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Create.createGroupOrFrameColumnAccessor.html"/>
10096
<!---END-->
10197

10298
To reference nested columns inside [ColumnGroups](DataColumn.md#columngroup), invoke `column<T>()` on accessor to parent [`ColumnGroup`](#columngroup):
@@ -108,7 +104,6 @@ val name by columnGroup()
108104
val firstName by name.column<String>()
109105
```
110106

111-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Create.createDeepColumnAccessor.html"/>
112107
<!---END-->
113108

114109
You can also create virtual accessor that doesn't point to a real column but computes some expression on every data access:
@@ -146,7 +141,6 @@ df[fullName]
146141
```
147142

148143
</tab></tabs>
149-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Create.columnAccessorComputed.html"/>
150144
<!---END-->
151145

152146
If expression depends only on one column, you can also use `map`:
@@ -173,6 +167,5 @@ val ageCol1 = age.withValues(15, 20)
173167
val ageCol2 = age.withValues(1..10)
174168
```
175169

176-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Create.columnAccessorToColumn.html"/>
177170
<!---END-->
178171

docs/StardustDocs/topics/KPropertiesApi.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ val passengers = DataFrame.read("titanic.csv")
2828
.toListOf<Passenger>()
2929
```
3030

31-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.ApiLevels.kproperties1.html"/>
3231
<!---END-->
3332

3433
By default, [`DataFrame`](DataFrame.md) uses `name` and `returnType` of `KProperty` for typed access to data.
@@ -48,5 +47,4 @@ val passengers = DataFrame.read("titanic.csv")
4847
.toListOf<Passenger>()
4948
```
5049

51-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.ApiLevels.kproperties2.html"/>
5250
<!---END-->

docs/StardustDocs/topics/access.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ df.rows() // Iterable<DataRow>
1313
df.values() // Sequence<Any?>
1414
```
1515

16-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Access.getRowsColumns.html"/>
1716
<!---END-->
1817

1918
**Learn how to:**

docs/StardustDocs/topics/add.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,12 @@ Consider this API:
142142

143143
```kotlin
144144
class CityInfo(val city: String?, val population: Int, val location: String)
145+
145146
fun queryCityInfo(city: String?): CityInfo {
146147
return CityInfo(city, city?.length ?: 0, "35.5 32.2")
147148
}
148149
```
149150

150-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Modify.addCalculatedApi.html"/>
151151
<!---END-->
152152

153153
Use the following approach to add multiple columns by calling the given API only once per row:
@@ -194,7 +194,6 @@ val personWithCityInfo = df.add {
194194
```
195195

196196
</tab></tabs>
197-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Modify.addCalculated.html"/>
198197
<!---END-->
199198

200199
## Add existing column to [`DataFrame`](DataFrame.md)

docs/StardustDocs/topics/apiLevels.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ DataFrame.read("titanic.csv")
5252
}
5353
```
5454

55-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.ApiLevels.strings.html"/>
5655
<!---END-->
5756

5857
</tab>
@@ -74,7 +73,6 @@ DataFrame.read("titanic.csv")
7473
.filter { survived() && home().endsWith("NY") && age()!! in 10..20 }
7574
```
7675

77-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.ApiLevels.accessors3.html"/>
7876
<!---END-->
7977

8078
</tab>
@@ -102,7 +100,6 @@ val passengers = DataFrame.read("titanic.csv")
102100
.toListOf<Passenger>()
103101
```
104102

105-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.ApiLevels.kproperties1.html"/>
106103
<!---END-->
107104

108105
</tab>
@@ -115,7 +112,6 @@ val passengers = DataFrame.read("titanic.csv")
115112
val df = DataFrame.read("titanic.csv")
116113
```
117114

118-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.ApiLevels.extensionProperties1.html"/>
119115
<!---END-->
120116

121117
<!---FUN extensionProperties2-->
@@ -126,7 +122,6 @@ df.add("lastName") { name.split(",").last() }
126122
.filter { survived && home.endsWith("NY") && age in 10..20 }
127123
```
128124

129-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.ApiLevels.extensionProperties2.html"/>
130125
<!---END-->
131126

132127
</tab>

docs/StardustDocs/topics/collectionsInterop.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ df.rows() // Iterable<DataRow>
2626
df.values() // Sequence<Any?>
2727
```
2828

29-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Access.getRowsColumns.html"/>
3029
<!---END-->
3130

3231
## Interop with data classes
@@ -43,7 +42,6 @@ data class Input(val a: Int, val b: Int)
4342
val list = listOf(Input(1, 2), Input(3, 4))
4443
```
4544

46-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Collections.listInterop1.html"/>
4745
<!---END-->
4846

4947
You can convert this list into [`DataFrame`](DataFrame.md) using [`toDataFrame()`](createDataFrame.md#todataframe) extension:
@@ -54,7 +52,6 @@ You can convert this list into [`DataFrame`](DataFrame.md) using [`toDataFrame()
5452
val df = list.toDataFrame()
5553
```
5654

57-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Collections.listInterop2.html"/>
5855
<!---END-->
5956

6057
Mark original data class with [`DataSchema`](schemas.md) annotation to get [extension properties](extensionPropertiesApi.md) and perform data transformations.
@@ -68,7 +65,6 @@ data class Input(val a: Int, val b: Int)
6865
val df2 = df.add("c") { a + b }
6966
```
7067

71-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Collections.listInterop3.html"/>
7268
<!---END-->
7369

7470
<tip>
@@ -89,7 +85,6 @@ data class Output(val a: Int, val b: Int, val c: Int)
8985
val result = df2.toListOf<Output>()
9086
```
9187

92-
<dataFrame src="org.jetbrains.kotlinx.dataframe.samples.api.Collections.listInterop4.html"/>
9388
<!---END-->
9489

9590
### Converting columns with objects instances to ColumnGroup

0 commit comments

Comments
 (0)