Skip to content

Commit 30059fb

Browse files
formatting
1 parent cac1b7f commit 30059fb

File tree

6 files changed

+43
-18
lines changed

6 files changed

+43
-18
lines changed

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/format.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,13 @@ public fun <T> FormattedFrame<T>.format(): FormatClause<T, Any?> = FormatClause(
390390
* Check out the full [Grammar][FormatDocs.Grammar].
391391
*/
392392
public fun <T, C> FormatClause<T, C>.where(filter: RowValueFilter<T, C>): FormatClause<T, C> =
393-
FormatClause(filter = this.filter and filter, df = df, columns = columns, oldFormatter = oldFormatter, oldHeaderFormatter = oldHeaderFormatter)
393+
FormatClause(
394+
filter = this.filter and filter,
395+
df = df,
396+
columns = columns,
397+
oldFormatter = oldFormatter,
398+
oldHeaderFormatter = oldHeaderFormatter,
399+
)
394400

395401
/**
396402
* Only format the selected columns at given row indices.
@@ -830,7 +836,10 @@ public class FormattedFrame<T>(
830836
/** Applies this formatter to the given [configuration] and returns a new instance. */
831837
@Suppress("UNCHECKED_CAST")
832838
public fun getDisplayConfiguration(configuration: DisplayConfiguration): DisplayConfiguration =
833-
configuration.copy(cellFormatter = formatter as RowColFormatter<*, *>?, headerFormatter = headerFormatter as HeaderColFormatter<*>?)
839+
configuration.copy(
840+
cellFormatter = formatter as RowColFormatter<*, *>?,
841+
headerFormatter = headerFormatter as HeaderColFormatter<*>?,
842+
)
834843
}
835844

836845
/**

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/formatHeader.kt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import org.jetbrains.kotlinx.dataframe.DataFrame
55
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
66
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
77
import org.jetbrains.kotlinx.dataframe.columns.ColumnWithPath
8+
import org.jetbrains.kotlinx.dataframe.columns.UnresolvedColumnsPolicy
89
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
910
import org.jetbrains.kotlinx.dataframe.impl.getColumnPaths
10-
import org.jetbrains.kotlinx.dataframe.columns.UnresolvedColumnsPolicy
11-
import kotlin.reflect.KProperty
1211
import org.jetbrains.kotlinx.dataframe.util.DEPRECATED_ACCESS_API
12+
import kotlin.reflect.KProperty
1313

1414
/**
1515
* Formats the headers (column names) of the selected columns similarly to how [format] formats cell values.
@@ -78,13 +78,22 @@ public fun <T, C> DataFrame<T>.formatHeader(vararg columns: KProperty<C>): Heade
7878
// region FormattedFrame.formatHeader
7979

8080
public fun <T, C> FormattedFrame<T>.formatHeader(columns: ColumnsSelector<T, C>): HeaderFormatClause<T, C> =
81-
HeaderFormatClause(df = df, columns = columns, oldHeaderFormatter = headerFormatter as HeaderColFormatter<C>?, oldCellFormatter = formatter)
81+
HeaderFormatClause(
82+
df = df,
83+
columns = columns,
84+
oldHeaderFormatter = headerFormatter as HeaderColFormatter<C>?,
85+
oldCellFormatter = formatter,
86+
)
8287

8388
public fun <T> FormattedFrame<T>.formatHeader(vararg columns: String): HeaderFormatClause<T, Any?> =
8489
formatHeader { columns.toColumnSet() }
8590

8691
public fun <T> FormattedFrame<T>.formatHeader(): HeaderFormatClause<T, Any?> =
87-
HeaderFormatClause(df = df, oldHeaderFormatter = headerFormatter as HeaderColFormatter<Any?>?, oldCellFormatter = formatter)
92+
HeaderFormatClause(
93+
df = df,
94+
oldHeaderFormatter = headerFormatter as HeaderColFormatter<Any?>?,
95+
oldCellFormatter = formatter,
96+
)
8897

8998
// endregion
9099

@@ -102,7 +111,15 @@ public fun <T, C> HeaderFormatClause<T, C>.with(formatter: HeaderColFormatter<C>
102111
val parentAttributes = parentCols
103112
.dropLast(1)
104113
.map { path -> ColumnWithPath(df[path], path) }
105-
.map { parentCol -> if (parentCol.path in paths) (oldHeader?.invoke(FormattingDsl, parentCol as ColumnWithPath<C>)) else null }
114+
.map { parentCol ->
115+
if (parentCol.path in
116+
paths
117+
) {
118+
(oldHeader?.invoke(FormattingDsl, parentCol as ColumnWithPath<C>))
119+
} else {
120+
null
121+
}
122+
}
106123
.reduceOrNull(CellAttributes?::and)
107124
val selfAttr = if (col.path in paths) {
108125
val oldAttr = oldHeader?.invoke(FormattingDsl, col as ColumnWithPath<C>)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,6 @@ internal inline fun <T, C> FormatClause<T, C>.formatImpl(
6868
}
6969
oldAttributes
7070
},
71-
headerFormatter = clause.oldHeaderFormatter
71+
headerFormatter = clause.oldHeaderFormatter,
7272
)
7373
}

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/html.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import org.jetbrains.kotlinx.dataframe.DataFrame
88
import org.jetbrains.kotlinx.dataframe.api.CellAttributes
99
import org.jetbrains.kotlinx.dataframe.api.FormattedFrame
1010
import org.jetbrains.kotlinx.dataframe.api.FormattingDsl
11-
import org.jetbrains.kotlinx.dataframe.api.RowColFormatter
1211
import org.jetbrains.kotlinx.dataframe.api.HeaderColFormatter
12+
import org.jetbrains.kotlinx.dataframe.api.RowColFormatter
1313
import org.jetbrains.kotlinx.dataframe.api.and
1414
import org.jetbrains.kotlinx.dataframe.api.asColumnGroup
1515
import org.jetbrains.kotlinx.dataframe.api.asNumbers
@@ -239,7 +239,9 @@ internal fun AnyFrame.toHtmlData(
239239
}
240240
val headerStyle = run {
241241
val hf = configuration.headerFormatter
242-
if (hf == null) null else {
242+
if (hf == null) {
243+
null
244+
} else {
243245
// collect attributes from parents
244246
val parentCols = col.path.indices
245247
.map { i -> col.path.take(i + 1) }

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/formatHeader.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ package org.jetbrains.kotlinx.dataframe.api
33
import io.kotest.matchers.shouldBe
44
import io.kotest.matchers.shouldNotBe
55
import org.jetbrains.kotlinx.dataframe.api.FormattingDsl.blue
6-
import org.jetbrains.kotlinx.dataframe.api.FormattingDsl.green
76
import org.jetbrains.kotlinx.dataframe.samples.api.TestBase
87
import org.jetbrains.kotlinx.dataframe.samples.api.age
9-
import org.jetbrains.kotlinx.dataframe.samples.api.name
108
import org.jetbrains.kotlinx.dataframe.samples.api.firstName
9+
import org.jetbrains.kotlinx.dataframe.samples.api.name
1110
import org.junit.Test
1211

1312
class FormatHeaderTests : TestBase() {
@@ -21,7 +20,6 @@ class FormatHeaderTests : TestBase() {
2120
// count exact style occurrences to avoid interference with CSS
2221
val occurrences = html.split("border:3px solid green").size - 1
2322
occurrences shouldBe 1
24-
2523
}
2624

2725
@Test

samples/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/io/Parquet.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package org.jetbrains.kotlinx.dataframe.samples.io
22

33
import io.kotest.matchers.shouldBe
4-
import java.io.File
5-
import java.nio.file.Path
6-
import java.nio.file.Paths
74
import org.jetbrains.kotlinx.dataframe.DataFrame
85
import org.jetbrains.kotlinx.dataframe.api.NullabilityOptions
9-
import org.junit.Test
106
import org.jetbrains.kotlinx.dataframe.io.readParquet
117
import org.jetbrains.kotlinx.dataframe.testParquet
8+
import org.junit.Test
9+
import java.io.File
10+
import java.nio.file.Paths
1211

1312
class Parquet {
1413
@Test
@@ -56,7 +55,7 @@ class Parquet {
5655
val df = DataFrame.readParquet(
5756
file,
5857
nullability = NullabilityOptions.Infer,
59-
batchSize = 64L * 1024
58+
batchSize = 64L * 1024,
6059
)
6160
// SampleEnd
6261
df.rowsCount() shouldBe 300

0 commit comments

Comments
 (0)