Skip to content

Commit ea7569e

Browse files
authored
Added required lowercase conversion for all the columns (#379)
* Added test and fixed behaviour * Regenerated docs
1 parent 3101982 commit ea7569e

File tree

4 files changed

+36
-0
lines changed
  • core
    • generated-sources/src
      • main/kotlin/org/jetbrains/kotlinx/dataframe/api
      • test/kotlin/org/jetbrains/kotlinx/dataframe/api
    • src
      • main/kotlin/org/jetbrains/kotlinx/dataframe/api
      • test/kotlin/org/jetbrains/kotlinx/dataframe/api

4 files changed

+36
-0
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,26 @@ public fun <T, C> DataFrame<T>.rename(cols: Iterable<ColumnReference<C>>): Renam
4343
public data class RenameClause<T, C>(val df: DataFrame<T>, val columns: ColumnsSelector<T, C>)
4444

4545
public fun <T> DataFrame<T>.renameToCamelCase(): DataFrame<T> {
46+
// recursively rename all column groups to camel case
4647
return rename {
4748
dfs { it.isColumnGroup() && it.name() matches DELIMITED_STRING_REGEX }
4849
}.toCamelCase()
50+
// recursively rename all other columns to camel case
4951
.rename {
5052
dfs { !it.isColumnGroup() && it.name() matches DELIMITED_STRING_REGEX }
5153
}.toCamelCase()
54+
55+
// take all frame columns recursively and call renameToCamelCase() on all dataframes inside
5256
.update {
5357
dfsOf<AnyFrame>()
5458
}.with { it.renameToCamelCase() }
59+
60+
// convert all first chars of all columns to the lowercase
61+
.rename {
62+
allDfs()
63+
}.into {
64+
it.name.replaceFirstChar { it.lowercaseChar() }
65+
}
5566
}
5667

5768
public fun <T, C> RenameClause<T, C>.into(vararg newColumns: ColumnReference<*>): DataFrame<T> =

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,11 @@ class RenameTests {
5555
}
5656
}
5757
}
58+
59+
@Test
60+
fun `rename to camelCase`() {
61+
val dfWithUpperCaseColumnNames = dataFrameOf("First_Column", "second_column", "ThirdColumn")(1, 2, 3)
62+
val df = dfWithUpperCaseColumnNames.renameToCamelCase()
63+
df.columnNames() shouldBe listOf("firstColumn", "secondColumn", "thirdColumn")
64+
}
5865
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,26 @@ public fun <T, C> DataFrame<T>.rename(cols: Iterable<ColumnReference<C>>): Renam
4343
public data class RenameClause<T, C>(val df: DataFrame<T>, val columns: ColumnsSelector<T, C>)
4444

4545
public fun <T> DataFrame<T>.renameToCamelCase(): DataFrame<T> {
46+
// recursively rename all column groups to camel case
4647
return rename {
4748
dfs { it.isColumnGroup() && it.name() matches DELIMITED_STRING_REGEX }
4849
}.toCamelCase()
50+
// recursively rename all other columns to camel case
4951
.rename {
5052
dfs { !it.isColumnGroup() && it.name() matches DELIMITED_STRING_REGEX }
5153
}.toCamelCase()
54+
55+
// take all frame columns recursively and call renameToCamelCase() on all dataframes inside
5256
.update {
5357
dfsOf<AnyFrame>()
5458
}.with { it.renameToCamelCase() }
59+
60+
// convert all first chars of all columns to the lowercase
61+
.rename {
62+
allDfs()
63+
}.into {
64+
it.name.replaceFirstChar { it.lowercaseChar() }
65+
}
5566
}
5667

5768
public fun <T, C> RenameClause<T, C>.into(vararg newColumns: ColumnReference<*>): DataFrame<T> =

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,11 @@ class RenameTests {
5555
}
5656
}
5757
}
58+
59+
@Test
60+
fun `rename to camelCase`() {
61+
val dfWithUpperCaseColumnNames = dataFrameOf("First_Column", "second_column", "ThirdColumn")(1, 2, 3)
62+
val df = dfWithUpperCaseColumnNames.renameToCamelCase()
63+
df.columnNames() shouldBe listOf("firstColumn", "secondColumn", "thirdColumn")
64+
}
5865
}

0 commit comments

Comments
 (0)