Skip to content

Commit 6ec9043

Browse files
committed
Support parsing of Duration type
1 parent fb9fa11 commit 6ec9043

File tree

2 files changed

+13
-0
lines changed
  • src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api
  • tests/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api

2 files changed

+13
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import kotlin.reflect.KType
4141
import kotlin.reflect.full.withNullability
4242
import kotlin.reflect.jvm.jvmErasure
4343
import kotlin.reflect.typeOf
44+
import kotlin.time.Duration
4445

4546
internal interface StringParser<T> {
4647
fun toConverter(options: ParserOptions?): TypeConverter
@@ -203,6 +204,9 @@ internal object Parsers : GlobalParserOptions {
203204
parser
204205
},
205206

207+
// kotlin.time.duration
208+
stringParser { catchSilent { Duration.parse(it) } },
209+
206210
stringParserWithOptions { options ->
207211
val formatter = options?.getDateTimeFormatter()
208212
val parser = { it: String -> it.toLocalTimeOrNull(formatter) }

tests/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/parse.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ import org.junit.Test
1313
import java.time.LocalTime
1414
import java.time.Month
1515
import kotlin.reflect.typeOf
16+
import kotlin.time.Duration.Companion.days
17+
import kotlin.time.Duration.Companion.hours
18+
import kotlin.time.Duration.Companion.minutes
19+
import kotlin.time.Duration.Companion.seconds
1620

1721
class ParseTests {
1822

@@ -189,4 +193,9 @@ class ParseTests {
189193

190194
columnOf("2022-01-23T04:29:40").parse().type shouldBe typeOf<LocalDateTime>()
191195
}
196+
197+
@Test
198+
fun `parse duration`() {
199+
columnOf("1d 15m", "20h 35m 11s").parse() shouldBe columnOf(1.days + 15.minutes, 20.hours + 35.minutes + 11.seconds)
200+
}
192201
}

0 commit comments

Comments
 (0)