diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d64958418d..44d9c728530 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 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 */ diff --git a/gradle.properties b/gradle.properties index 20cbac38b33..000afc9ac55 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,5 +18,5 @@ crypto_js_version=4.1.1 # Project data group=dev.inmo -version=0.26.3 -android_code_version=302 +version=0.26.4 +android_code_version=303