From 79debd901f16d2f1b9d06a4214c36b8cc909b28e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C3=A4lz?= Date: Wed, 16 May 2018 22:07:31 +0200 Subject: [PATCH 1/2] Add custom DslMarker annotation to mark dsl elements --- .../main/java/com/thejuki/kformmaster/helper/FormBuilder.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/form/src/main/java/com/thejuki/kformmaster/helper/FormBuilder.kt b/form/src/main/java/com/thejuki/kformmaster/helper/FormBuilder.kt index 3ea2f4a4..27f1c636 100644 --- a/form/src/main/java/com/thejuki/kformmaster/helper/FormBuilder.kt +++ b/form/src/main/java/com/thejuki/kformmaster/helper/FormBuilder.kt @@ -20,6 +20,9 @@ import kotlin.collections.ArrayList * @version 1.0 */ +@DslMarker +annotation class FormDsl + /** Type-safe builder method to initialize the form */ fun form(context: Context, recyclerView: RecyclerView, @@ -51,6 +54,7 @@ class HeaderBuilder(var title: String = "") : FieldBuilder { } /** FormBuildHelper extension to add a FormHeader */ +@FormDsl fun FormBuildHelper.header(init: HeaderBuilder.() -> Unit): FormHeader { val element = HeaderBuilder().apply(init).build() element.id = ++lastId @@ -59,6 +63,7 @@ fun FormBuildHelper.header(init: HeaderBuilder.() -> Unit): FormHeader { } /** Builder method to add a BaseFormElement */ +@FormDsl abstract class BaseElementBuilder(protected val tag: Int = -1, var title: String? = null) : FieldBuilder { /** * Form Element Value From 526d1dc386af21bb41c9477a03dce1b65b9acb93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C3=A4lz?= Date: Wed, 16 May 2018 22:10:05 +0200 Subject: [PATCH 2/2] Prevent that form elements are wrongly nested with the DSL --- .../main/java/com/thejuki/kformmaster/helper/FormBuildHelper.kt | 1 + .../src/main/java/com/thejuki/kformmaster/helper/FormBuilder.kt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/form/src/main/java/com/thejuki/kformmaster/helper/FormBuildHelper.kt b/form/src/main/java/com/thejuki/kformmaster/helper/FormBuildHelper.kt index 065c45fa..08d69193 100644 --- a/form/src/main/java/com/thejuki/kformmaster/helper/FormBuildHelper.kt +++ b/form/src/main/java/com/thejuki/kformmaster/helper/FormBuildHelper.kt @@ -21,6 +21,7 @@ import java.util.* * @author **TheJuki** ([GitHub](https://github.com/TheJuki)) * @version 1.0 */ +@FormDsl class FormBuildHelper @JvmOverloads constructor(context: Context, listener: OnFormElementValueChangedListener? = null, recyclerView: RecyclerView? = null, val cacheForm: Boolean = true, autoMeasureEnabled: Boolean = false) { diff --git a/form/src/main/java/com/thejuki/kformmaster/helper/FormBuilder.kt b/form/src/main/java/com/thejuki/kformmaster/helper/FormBuilder.kt index 27f1c636..412031d9 100644 --- a/form/src/main/java/com/thejuki/kformmaster/helper/FormBuilder.kt +++ b/form/src/main/java/com/thejuki/kformmaster/helper/FormBuilder.kt @@ -41,6 +41,7 @@ fun form(context: Context, } /** FieldBuilder interface */ +@FormDsl interface FieldBuilder { fun build(): BaseFormElement<*> } @@ -54,7 +55,6 @@ class HeaderBuilder(var title: String = "") : FieldBuilder { } /** FormBuildHelper extension to add a FormHeader */ -@FormDsl fun FormBuildHelper.header(init: HeaderBuilder.() -> Unit): FormHeader { val element = HeaderBuilder().apply(init).build() element.id = ++lastId