diff --git a/CHANGELOG.md b/CHANGELOG.md index 97e671c8804..44d9c728530 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.26.4 +* `Common`: + * Add expect/actual `MPPFilePathSeparator` + * Fix `FileName` realization to take care about system file path separator + ## 0.26.3 * `Versions`: diff --git a/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/MPPFile.kt b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/MPPFile.kt index 7aef8ed8c9a..403d4955407 100644 --- a/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/MPPFile.kt +++ b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/MPPFile.kt @@ -7,7 +7,7 @@ import kotlin.jvm.JvmInline @JvmInline value class FileName(val string: String) { val name: String - get() = withoutSlashAtTheEnd.takeLastWhile { it != '/' } + get() = withoutSlashAtTheEnd.takeLastWhile { it != MPPFilePathSeparator } val extension: String get() = name.takeLastWhile { it != '.' } val nameWithoutExtension: String @@ -18,7 +18,7 @@ value class FileName(val string: String) { } ?: filename } val withoutSlashAtTheEnd: String - get() = string.dropLastWhile { it == '/' } + get() = string.dropLastWhile { it == MPPFilePathSeparator } override fun toString(): String = string } @@ -26,6 +26,7 @@ value class FileName(val string: String) { expect class MPPFile expect val MPPFile.filename: FileName +expect val MPPFilePathSeparator: Char expect val MPPFile.filesize: Long expect val MPPFile.bytesAllocatorSync: ByteArrayAllocator expect val MPPFile.bytesAllocator: SuspendByteArrayAllocator diff --git a/common/src/jsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt b/common/src/jsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt index 7e3d865bfb6..807f613e816 100644 --- a/common/src/jsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt +++ b/common/src/jsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt @@ -35,6 +35,10 @@ private suspend fun MPPFile.dirtyReadBytes(): ByteArray = readBytesPromise().awa */ actual val MPPFile.filename: FileName get() = FileName(name) + +actual val MPPFilePathSeparator: Char + get() = '/' + /** * @suppress */ diff --git a/common/src/jvmMain/kotlin/dev/inmo/micro_utils/common/JVMMPPFile.kt b/common/src/jvmMain/kotlin/dev/inmo/micro_utils/common/JVMMPPFile.kt index e245fe93836..c0a0055e8b6 100644 --- a/common/src/jvmMain/kotlin/dev/inmo/micro_utils/common/JVMMPPFile.kt +++ b/common/src/jvmMain/kotlin/dev/inmo/micro_utils/common/JVMMPPFile.kt @@ -14,6 +14,10 @@ actual typealias MPPFile = File */ actual val MPPFile.filename: FileName get() = FileName(name) + +actual val MPPFilePathSeparator: Char + get() = File.separatorChar + /** * @suppress */ diff --git a/common/src/nativeMain/kotlin/ActualMPPFile.kt b/common/src/nativeMain/kotlin/ActualMPPFile.kt index ff5f9619c53..1a28a144be2 100644 --- a/common/src/nativeMain/kotlin/ActualMPPFile.kt +++ b/common/src/nativeMain/kotlin/ActualMPPFile.kt @@ -11,6 +11,10 @@ actual typealias MPPFile = Path */ actual val MPPFile.filename: FileName get() = FileName(toString()) + + +actual val MPPFilePathSeparator: Char = Path.DIRECTORY_SEPARATOR.first() + /** * @suppress */ diff --git a/common/src/wasmJsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt b/common/src/wasmJsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt index cd5ad68ae73..2bf8f16fb36 100644 --- a/common/src/wasmJsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt +++ b/common/src/wasmJsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt @@ -37,6 +37,10 @@ private suspend fun MPPFile.dirtyReadBytes(): ByteArray = readBytesPromise().awa */ actual val MPPFile.filename: FileName get() = FileName(name) + +actual val MPPFilePathSeparator: Char + get() = '/' + /** * @suppress */