From 97278b1e4ecd4db5224db83e167f6c7a68d4abb7 Mon Sep 17 00:00:00 2001 From: nea Date: Fri, 13 Aug 2021 16:49:33 +0200 Subject: more checks --- src/jsMain/kotlin/io/Path.kt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/jsMain/kotlin/io') diff --git a/src/jsMain/kotlin/io/Path.kt b/src/jsMain/kotlin/io/Path.kt index f486581..20e4a90 100644 --- a/src/jsMain/kotlin/io/Path.kt +++ b/src/jsMain/kotlin/io/Path.kt @@ -1,12 +1,14 @@ package io -sealed interface Path { - val parts: List +sealed class Path { + abstract val parts: List fun toAbsolutePath(relativeTo: Absolute): Absolute { return relativeTo.resolve(this) } - fun resolve(path: Path): Path + abstract fun resolve(path: Path): Path + + abstract val stringPath: String companion object { val root = Absolute(listOf()) @@ -38,19 +40,23 @@ sealed interface Path { } } - data class Relative internal constructor(override val parts: List) : Path { + data class Relative internal constructor(override val parts: List) : Path() { override fun resolve(path: Path): Path { if (path is Absolute) return path return Relative(this.parts + path.parts) } + + override val stringPath: String get() = parts.joinToString("/") } - data class Absolute internal constructor(override val parts: List) : Path { + data class Absolute internal constructor(override val parts: List) : Path() { override fun resolve(path: Path): Absolute { if (path is Absolute) return path return Absolute(this.parts + path.parts) } + override val stringPath: String get() = "/" + parts.joinToString("/") + fun relativize(path: Path): Relative = when (path) { is Relative -> path is Absolute -> { @@ -72,4 +78,6 @@ sealed interface Path { } } } + + override fun toString(): String = "Path($stringPath)" } -- cgit