diff --git a/build.gradle.kts b/build.gradle.kts index e2e0a4f..e2afc2e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,8 @@ +import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl + plugins { java - kotlin("multiplatform") version "1.7.21" + kotlin("multiplatform") version "2.1.10" id("org.jetbrains.dokka").version("1.7.20") `maven-publish` signing @@ -38,12 +40,16 @@ kotlin { artifact(dokkaJar) } } - js(BOTH) { + js(IR) { browser { } nodejs { } } + @OptIn(ExperimentalWasmDsl::class) + wasmJs { + browser() + } sourceSets { commonMain {} commonTest { diff --git a/src/commonMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvStringReader.kt b/src/commonMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvStringReader.kt new file mode 100644 index 0000000..f3921bc --- /dev/null +++ b/src/commonMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvStringReader.kt @@ -0,0 +1,29 @@ +package com.github.doyaaaaaken.kotlincsv.client + +import com.github.doyaaaaaken.kotlincsv.dsl.context.CsvReaderContext +import com.github.doyaaaaaken.kotlincsv.dsl.context.ICsvReaderContext + +/** + * Base implementation for a [CsvReader] that reads from Strings. + * + * @author doyaaaaaken + * @author gsteckman + */ +open class CsvStringReader( + private val ctx: CsvReaderContext +) : ICsvReaderContext by ctx { + + /** + * read csv data as String, and convert into List> + */ + fun readAll(data: String): List> { + return CsvFileReader(ctx, StringReaderImpl(data), logger).readAllAsSequence().toList() + } + + /** + * read csv data with header, and convert into List> + */ + fun readAllWithHeader(data: String): List> { + return CsvFileReader(ctx, StringReaderImpl(data), logger).readAllWithHeaderAsSequence().toList() + } +} diff --git a/src/jsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvReader.kt b/src/jsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvReader.kt index 7792b44..23fa5ee 100644 --- a/src/jsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvReader.kt +++ b/src/jsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvReader.kt @@ -1,7 +1,6 @@ package com.github.doyaaaaaken.kotlincsv.client import com.github.doyaaaaaken.kotlincsv.dsl.context.CsvReaderContext -import com.github.doyaaaaaken.kotlincsv.dsl.context.ICsvReaderContext /** * CSV Reader class @@ -9,20 +8,5 @@ import com.github.doyaaaaaken.kotlincsv.dsl.context.ICsvReaderContext * @author doyaaaaaken */ actual class CsvReader actual constructor( - private val ctx: CsvReaderContext -) : ICsvReaderContext by ctx { - - /** - * read csv data as String, and convert into List> - */ - actual fun readAll(data: String): List> { - return CsvFileReader(ctx, StringReaderImpl(data), logger).readAllAsSequence().toList() - } - - /** - * read csv data with header, and convert into List> - */ - actual fun readAllWithHeader(data: String): List> { - return CsvFileReader(ctx, StringReaderImpl(data), logger).readAllWithHeaderAsSequence().toList() - } -} + ctx: CsvReaderContext +) : CsvStringReader(ctx) diff --git a/src/wasmJsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvReader.kt b/src/wasmJsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvReader.kt new file mode 100644 index 0000000..23fa5ee --- /dev/null +++ b/src/wasmJsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvReader.kt @@ -0,0 +1,12 @@ +package com.github.doyaaaaaken.kotlincsv.client + +import com.github.doyaaaaaken.kotlincsv.dsl.context.CsvReaderContext + +/** + * CSV Reader class + * + * @author doyaaaaaken + */ +actual class CsvReader actual constructor( + ctx: CsvReaderContext +) : CsvStringReader(ctx) diff --git a/src/wasmJsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvWriter.kt b/src/wasmJsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvWriter.kt new file mode 100644 index 0000000..a52ad8f --- /dev/null +++ b/src/wasmJsMain/kotlin/com/github/doyaaaaaken/kotlincsv/client/CsvWriter.kt @@ -0,0 +1,27 @@ +package com.github.doyaaaaaken.kotlincsv.client + +import com.github.doyaaaaaken.kotlincsv.dsl.context.CsvWriterContext + +/** + * CSV Writer class + * + * @author doyaaaaaken + */ +actual class CsvWriter actual constructor(ctx: CsvWriterContext) { + + actual fun open(targetFileName: String, append: Boolean, write: ICsvFileWriter.() -> Unit) { + TODO("Not Implemented") + } + + actual fun writeAll(rows: List>, targetFileName: String, append: Boolean) { + TODO("Not Implemented") + } + + actual suspend fun writeAllAsync(rows: List>, targetFileName: String, append: Boolean) { + TODO("Not Implemented") + } + + actual suspend fun openAsync(targetFileName: String, append: Boolean, write: suspend ICsvFileWriter.() -> Unit) { + TODO("Not Implemented") + } +}