From 3913c4af7601bc3eaaeedebc7665bf5c0a1ac299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20R=C3=BCmpelein?= Date: Fri, 17 Apr 2020 13:00:44 +0200 Subject: [PATCH] Move DSL methods to builders, fix JS compilation --- build.gradle.kts | 3 ++ .../de/pheerai/rcdbquery/dsl/rcdbQueryDsl.kt | 33 ++++++++----------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 69b71d6..1967cc5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -66,6 +66,9 @@ kotlin { } } getByName("jsMain") { + dependencies { + implementation(kotlin("stdlib-js")) + } } getByName("jsTest") { dependencies { diff --git a/src/commonMain/kotlin/de/pheerai/rcdbquery/dsl/rcdbQueryDsl.kt b/src/commonMain/kotlin/de/pheerai/rcdbquery/dsl/rcdbQueryDsl.kt index e3a5cb9..6c6fede 100644 --- a/src/commonMain/kotlin/de/pheerai/rcdbquery/dsl/rcdbQueryDsl.kt +++ b/src/commonMain/kotlin/de/pheerai/rcdbquery/dsl/rcdbQueryDsl.kt @@ -3,6 +3,7 @@ package de.pheerai.rcdbquery.dsl import de.pheerai.rcdbquery.dataMappings.* inline class RcdbQueryParams(val params: Map>) + class RcdbQueryParamsBuilder { // TODO: Make way for single-valued params as well private val params: MutableMap>> = mutableMapOf() @@ -15,14 +16,7 @@ class RcdbQueryParamsBuilder { ) operator fun set(paramName: String, options: List>) { - when (paramName) { - "order" -> if (this.params.containsKey(paramName)) { - this.params[paramName] = this.params[paramName].append(options) - } else { - this.params[paramName] = options - } - else -> this.params[paramName] = options - } + this.params[paramName] = options } operator fun get(paramName: String) = this.params[paramName] @@ -70,6 +64,13 @@ class VendorBuilder : RcdbParamOptionBuilder() { super.add(param) return this } + + fun of(vendor: Vendor) = this.add(vendor) + fun vekoma() = this.add(Vendor.VEKOMA) + fun intamin() = this.add(Vendor.INTAMIN) + fun mack() = this.add(Vendor.MACK) + fun bandm() = this.add(Vendor.B_AND_M) + fun gerstlauer() = this.add(Vendor.GERSTLAUER) } fun RcdbQueryParamsBuilder.vendors(body: VendorBuilder.() -> VendorBuilder): RcdbQueryParamsBuilder { @@ -78,13 +79,6 @@ fun RcdbQueryParamsBuilder.vendors(body: VendorBuilder.() -> VendorBuilder): Rcd this[Vendor.staticParamName] = builder.build() return this } - -fun VendorBuilder.of(vendor: Vendor) = this.add(vendor) -fun VendorBuilder.vekoma() = this.add(Vendor.VEKOMA) -fun VendorBuilder.intamin() = this.add(Vendor.INTAMIN) -fun VendorBuilder.mack() = this.add(Vendor.MACK) -fun VendorBuilder.bandm() = this.add(Vendor.B_AND_M) -fun VendorBuilder.gerstlauer() = this.add(Vendor.GERSTLAUER) //endregion //region Order @@ -93,6 +87,10 @@ class OrderBuilder : RcdbParamOptionBuilder() { super.add(param) return this } + + fun of(order: Order) = this.add(order) + fun manufacturer() = this.add(Order.MANUFACTURER) + fun inversion() = this.add(Order.INVERSIONS) } fun RcdbQueryParamsBuilder.sortBy(body: OrderBuilder.() -> OrderBuilder): RcdbQueryParamsBuilder { @@ -100,11 +98,8 @@ fun RcdbQueryParamsBuilder.sortBy(body: OrderBuilder.() -> OrderBuilder): RcdbQu builder.body() this[Order.staticParamName] = builder.build() return this -} -fun OrderBuilder.of(order: Order) = this.add(order) -fun OrderBuilder.manufacturer() = this.add(Order.MANUFACTURER) -fun OrderBuilder.inversion() = this.add(Order.INVERSIONS) +} //endregion //region Search type