diff options
author | nea <romangraef@gmail.com> | 2021-08-13 16:49:33 +0200 |
---|---|---|
committer | nea <romangraef@gmail.com> | 2021-08-13 16:49:33 +0200 |
commit | 97278b1e4ecd4db5224db83e167f6c7a68d4abb7 (patch) | |
tree | 114a83fb3f698a1978bf6b0c0c318eca15fdf4f0 /src/jsMain | |
parent | e4753338d60396c00f80b494366b2869f8541944 (diff) | |
download | webos-97278b1e4ecd4db5224db83e167f6c7a68d4abb7.tar.gz webos-97278b1e4ecd4db5224db83e167f6c7a68d4abb7.tar.bz2 webos-97278b1e4ecd4db5224db83e167f6c7a68d4abb7.zip |
more checks
Diffstat (limited to 'src/jsMain')
-rw-r--r-- | src/jsMain/kotlin/io/Path.kt | 18 |
1 files changed, 13 insertions, 5 deletions
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<String> +sealed class Path { + abstract val parts: List<String> 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<String>) : Path { + data class Relative internal constructor(override val parts: List<String>) : 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<String>) : Path { + data class Absolute internal constructor(override val parts: List<String>) : 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)" } |