diff --git a/convention-plugins/build.gradle.kts b/convention-plugins/build.gradle.kts index ffffeff..ab7ff88 100644 --- a/convention-plugins/build.gradle.kts +++ b/convention-plugins/build.gradle.kts @@ -6,4 +6,5 @@ fun pluginId(pluginName: String, version: String) = "$pluginName:$pluginName.gra dependencies { implementation(libs.nexus.publish) implementation(pluginId("org.jetbrains.kotlin.multiplatform", "2.1.0")) + implementation(pluginId("net.kigawa.renlin-compiler", "1.3.8")) } \ No newline at end of file diff --git a/convention-plugins/src/main/kotlin/renlin.common.gradle.kts b/convention-plugins/src/main/kotlin/renlin.common.gradle.kts index 570f536..4d06725 100644 --- a/convention-plugins/src/main/kotlin/renlin.common.gradle.kts +++ b/convention-plugins/src/main/kotlin/renlin.common.gradle.kts @@ -2,7 +2,7 @@ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi plugins { kotlin("multiplatform") - + id("net.kigawa.renlin-compiler") } diff --git a/generate/src/jvmMain/kotlin/generator/DslGenerator.kt b/generate/src/jvmMain/kotlin/generator/DslGenerator.kt index 991509f..ea0125b 100644 --- a/generate/src/jvmMain/kotlin/generator/DslGenerator.kt +++ b/generate/src/jvmMain/kotlin/generator/DslGenerator.kt @@ -11,14 +11,17 @@ class DslGenerator( fun generate() { // DSLクラスの生成 (tagCategories.map { it.allowedCategories } + - tagCategories.flatMap { it.allowedCategories.categories }.map { AllowedCategories(it) }) + tagCategories.flatMap { it.allowedCategories.categories }.map { AllowedCategories(it) }) .filter { it.categories.isNotEmpty() } .forEach { allowedCategories -> val dslName = allowedCategories.connectedStr() + "Dsl" if (!processedDsls.contains(dslName)) { processedDsls.add(dslName) val categories = allowedCategories.categories - + val extends = categories + .filter { it.trim() + "Dsl" != dslName.trim() } + .map { "${it}Dsl" } + + "StatedDsl" val imports = mutableListOf() @@ -35,16 +38,15 @@ class DslGenerator( allowedCategories.connectedStr() }" } + import net.kigawa.renlin.dsl.StatedDsl /** * DSL for ${categories.joinToString(", ")} */ interface ${dslName}${ - if (categories.size <= 1) "" - else (categories.filter { it.trim() != dslName.trim() } - .joinToString(separator = ",", prefix = ":") - { "\n ${it}Dsl" }) + (extends.joinToString(separator = ",", prefix = ":") + { "\n $it" }) } """.trimIndent() diff --git a/gradle.properties b/gradle.properties index 17ed8c5..211078c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,6 @@ #Gradle -org.gradle.jvmargs=-Xmx4096M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\="-Xmx4096M" +org.gradle.jvmargs=-Xmx4096M -Dfile.encoding=UTF-8 +kotlin.daemon.jvmargs=-Xmx4096M org.gradle.caching=true # https://github.com/gradle/gradle/issues/22779 le sigh #org.gradle.configuration-cache=true diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/AutoFill.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/AutoFill.kt new file mode 100644 index 0000000..ff32e30 --- /dev/null +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/AutoFill.kt @@ -0,0 +1,9 @@ +package net.kigawa.renlin + +/** + * Marks a parameter for automatic value injection when passed as null. + * When applied to a function parameter, the plugin will automatically generate and inject a value if null is passed for this parameter. + */ +@Target(AnnotationTarget.VALUE_PARAMETER) +@Retention(AnnotationRetention.RUNTIME) +annotation class AutoFill \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/component/Component0.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/component/Component0.kt index 0a03c5b..3e26c24 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/component/Component0.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/component/Component0.kt @@ -1,10 +1,11 @@ package net.kigawa.renlin.component +import net.kigawa.renlin.AutoFill import net.kigawa.renlin.dsl.StatedDsl import net.kigawa.renlin.tag.Tag import net.kigawa.renlin.w3c.category.ContentCategory interface Component0, CONTENT_CATEGORY: ContentCategory>: Component { - fun render(parentDsl: StatedDsl, key: String?) + fun render(parentDsl: StatedDsl, @AutoFill key: String?) } \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/dsl/StatedDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/dsl/StatedDsl.kt index 2083785..ffb3150 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/dsl/StatedDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/dsl/StatedDsl.kt @@ -1,6 +1,7 @@ package net.kigawa.renlin.dsl import net.kigawa.hakate.api.state.State +import net.kigawa.renlin.AutoFill import net.kigawa.renlin.component.* import net.kigawa.renlin.state.DslState import net.kigawa.renlin.tag.Fragment @@ -25,7 +26,7 @@ import net.kigawa.renlin.w3c.element.TagNode * * @param CONTENT_CATEGORY このDSLが生成できるHTMLコンテンツのカテゴリ */ -interface StatedDsl< CONTENT_CATEGORY: ContentCategory>: Dsl { +interface StatedDsl: Dsl { /** * 現在のDSLに関連付けられた状態。 * この状態はDSLの動作と描画を制御します。 @@ -58,66 +59,66 @@ interface StatedDsl< CONTENT_CATEGORY: ContentCategory>: Dsl { operator fun > Component0.invoke( - key: String? = null, + @AutoFill key: String? = null, ) = this.render(this@StatedDsl, key) - /** - * コンポーネントを呼び出し、レンダリングするための演算子オーバーロード。 - * - * @param key コンポーネントの一意のキー(オプション) - * @param block コンポーネントの内容を定義するブロック - * @return コンポーネントのレンダリング結果 - */ - operator fun , DSL> Component1.invoke( - key: String? = null, block: DSL, - ) { - return this@invoke.render(this@StatedDsl, block, key) - } + /** + * コンポーネントを呼び出し、レンダリングするための演算子オーバーロード。 + * + * @param key コンポーネントの一意のキー(オプション) + * @param block コンポーネントの内容を定義するブロック + * @return コンポーネントのレンダリング結果 + */ + operator fun , DSL> Component1.invoke( + @AutoFill key: String? = null, block: DSL, + ) { + return this@invoke.render(this@StatedDsl, block, key) + } - /** - * Component2を呼び出し、レンダリングするための演算子オーバーロード。 - * - * @param key コンポーネントの一意のキー(オプション) - * @param arg1 第1引数 - * @param arg2 第2引数 - * @return コンポーネントのレンダリング結果 - */ - operator fun , ARG1, ARG2> Component2.invoke( - arg1: ARG1, arg2: ARG2, key: String? = null, - ) { - return this@invoke.render(this@StatedDsl, arg1, arg2, key) - } + /** + * Component2を呼び出し、レンダリングするための演算子オーバーロード。 + * + * @param key コンポーネントの一意のキー(オプション) + * @param arg1 第1引数 + * @param arg2 第2引数 + * @return コンポーネントのレンダリング結果 + */ + operator fun , ARG1, ARG2> Component2.invoke( + arg1: ARG1, arg2: ARG2, @AutoFill key: String? = null, + ) { + return this@invoke.render(this@StatedDsl, arg1, arg2, key) + } - /** - * Component3を呼び出し、レンダリングするための演算子オーバーロード。 - * - * @param key コンポーネントの一意のキー(オプション) - * @param arg1 第1引数 - * @param arg2 第2引数 - * @param arg3 第3引数 - * @return コンポーネントのレンダリング結果 - */ - operator fun , ARG1, ARG2, ARG3> Component3.invoke( - arg1: ARG1, arg2: ARG2, arg3: ARG3, key: String? = null, - ) { - return this@invoke.render(this@StatedDsl, arg1, arg2, arg3, key) - } + /** + * Component3を呼び出し、レンダリングするための演算子オーバーロード。 + * + * @param key コンポーネントの一意のキー(オプション) + * @param arg1 第1引数 + * @param arg2 第2引数 + * @param arg3 第3引数 + * @return コンポーネントのレンダリング結果 + */ + operator fun , ARG1, ARG2, ARG3> Component3.invoke( + arg1: ARG1, arg2: ARG2, arg3: ARG3, @AutoFill key: String? = null, + ) { + return this@invoke.render(this@StatedDsl, arg1, arg2, arg3, key) + } - /** - * Component4を呼び出し、レンダリングするための演算子オーバーロード。 - * - * @param key コンポーネントの一意のキー(オプション) - * @param arg1 第1引数 - * @param arg2 第2引数 - * @param arg3 第3引数 - * @param arg4 第4引数 - * @return コンポーネントのレンダリング結果 - */ - operator fun , ARG1, ARG2, ARG3, ARG4> Component4.invoke( - arg1: ARG1, arg2: ARG2, arg3: ARG3, arg4: ARG4, key: String? = null, - ) { - return this@invoke.render(this@StatedDsl, arg1, arg2, arg3, arg4, key) - } + /** + * Component4を呼び出し、レンダリングするための演算子オーバーロード。 + * + * @param key コンポーネントの一意のキー(オプション) + * @param arg1 第1引数 + * @param arg2 第2引数 + * @param arg3 第3引数 + * @param arg4 第4引数 + * @return コンポーネントのレンダリング結果 + */ + operator fun , ARG1, ARG2, ARG3, ARG4> Component4.invoke( + arg1: ARG1, arg2: ARG2, arg3: ARG3, arg4: ARG4, @AutoFill key: String? = null, + ) { + return this@invoke.render(this@StatedDsl, arg1, arg2, arg3, arg4, key) + } /** diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/state/DslStateData.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/state/DslStateData.kt index e64684f..9d80863 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/state/DslStateData.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/state/DslStateData.kt @@ -1,5 +1,6 @@ package net.kigawa.renlin.state +import net.kigawa.renlin.AutoFill import net.kigawa.renlin.w3c.event.WebPointerEvent import kotlin.reflect.KClass import kotlin.reflect.typeOf @@ -42,7 +43,7 @@ data class DslStateData( * @param T 追加データの値の型 * @param key 追加データの一意のキー */ - inline fun setAdditionalData(contextClass: KClass<*>, value: T, key: String? = null) { + inline fun setAdditionalData(contextClass: KClass<*>, value: T, @AutoFill key: String? = null) { removeAdditionalData(contextClass) additionalData = additionalData + AdditionalDslStateData( contextClass, typeOf(), key, value @@ -55,7 +56,7 @@ data class DslStateData( * @param T 追加データの値の型 * @param key 追加データの一意のキー */ - inline fun removeAdditionalData(contextClass: KClass<*>,key: String? = null) { + inline fun removeAdditionalData(contextClass: KClass<*>, @AutoFill key: String? = null) { additionalData = additionalData.filter { it.contextClass != contextClass || it.valueType != typeOf() || it.key != key } @@ -71,7 +72,7 @@ data class DslStateData( * @return 一致するデータが見つかった場合はその値、見つからない場合はnul * */ - inline fun getAdditionalData(contextClass: KClass<*>, key: String? = null): T? { + inline fun getAdditionalData(contextClass: KClass<*>, @AutoFill key: String? = null): T? { @Suppress("UNCHECKED_CAST") return additionalData .firstOrNull { diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/Func.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/Func.kt index 449c3d1..1dadc9a 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/Func.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/Func.kt @@ -1,11 +1,12 @@ package net.kigawa.renlin.w3c.category +import net.kigawa.renlin.AutoFill import net.kigawa.renlin.dsl.StatedDsl import net.kigawa.renlin.tag.text import net.kigawa.renlin.w3c.category.native.PhrasingContent -fun StatedDsl.t(str: String, key: String? = null) { +fun StatedDsl.t(str: String, @AutoFill key: String? = null) { text.render(this, { this@render.text = str }, key) diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/AutocapitalizeInheritingFormContentDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/AutocapitalizeInheritingFormContentDsl.kt index 56c0ea0..0bf2f53 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/AutocapitalizeInheritingFormContentDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/AutocapitalizeInheritingFormContentDsl.kt @@ -2,9 +2,11 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.native.AutocapitalizeInheritingFormContent +import net.kigawa.renlin.dsl.StatedDsl /** * DSL for AutocapitalizeInheritingFormContent */ -interface AutocapitalizeInheritingFormContentDsl \ No newline at end of file +interface AutocapitalizeInheritingFormContentDsl: + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/AutocapitalizeInheritingFormFlowFormAssociatedPalpableDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/AutocapitalizeInheritingFormFlowFormAssociatedPalpableDsl.kt index 905b2ef..1fb044c 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/AutocapitalizeInheritingFormFlowFormAssociatedPalpableDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/AutocapitalizeInheritingFormFlowFormAssociatedPalpableDsl.kt @@ -2,6 +2,7 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.integration.AutocapitalizeInheritingFormFlowFormAssociatedPalpable +import net.kigawa.renlin.dsl.StatedDsl /** @@ -11,4 +12,5 @@ interface AutocapitalizeInheritingFormFlowFormAssociatedPalpableDsl, PalpableContentDsl, FormAssociatedContentDsl, - AutocapitalizeInheritingFormContentDsl \ No newline at end of file + AutocapitalizeInheritingFormContentDsl, + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/EmbeddedContentDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/EmbeddedContentDsl.kt index 237de29..3e619ec 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/EmbeddedContentDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/EmbeddedContentDsl.kt @@ -2,9 +2,11 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.native.EmbeddedContent +import net.kigawa.renlin.dsl.StatedDsl /** * DSL for EmbeddedContent */ -interface EmbeddedContentDsl \ No newline at end of file +interface EmbeddedContentDsl: + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/EmbeddedFlowPalpablePhrasingDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/EmbeddedFlowPalpablePhrasingDsl.kt index d88c32e..5e6195c 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/EmbeddedFlowPalpablePhrasingDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/EmbeddedFlowPalpablePhrasingDsl.kt @@ -2,6 +2,7 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.integration.EmbeddedFlowPalpablePhrasing +import net.kigawa.renlin.dsl.StatedDsl /** @@ -11,4 +12,5 @@ interface EmbeddedFlowPalpablePhrasingDsl, PhrasingContentDsl, EmbeddedContentDsl, - PalpableContentDsl \ No newline at end of file + PalpableContentDsl, + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowContentDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowContentDsl.kt index 32e239f..7823b97 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowContentDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowContentDsl.kt @@ -2,9 +2,11 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.native.FlowContent +import net.kigawa.renlin.dsl.StatedDsl /** * DSL for FlowContent */ -interface FlowContentDsl \ No newline at end of file +interface FlowContentDsl: + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowFormAssociatedInteractivePalpablePhrasingDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowFormAssociatedInteractivePalpablePhrasingDsl.kt index 5479706..d40c95f 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowFormAssociatedInteractivePalpablePhrasingDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowFormAssociatedInteractivePalpablePhrasingDsl.kt @@ -2,6 +2,7 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.integration.FlowFormAssociatedInteractivePalpablePhrasing +import net.kigawa.renlin.dsl.StatedDsl /** @@ -12,4 +13,5 @@ interface FlowFormAssociatedInteractivePalpablePhrasingDsl, InteractiveContentDsl, PalpableContentDsl, - FormAssociatedContentDsl \ No newline at end of file + FormAssociatedContentDsl, + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowInteractivePalpablePhrasingDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowInteractivePalpablePhrasingDsl.kt index 4183131..fe4d93b 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowInteractivePalpablePhrasingDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowInteractivePalpablePhrasingDsl.kt @@ -2,6 +2,7 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.integration.FlowInteractivePalpablePhrasing +import net.kigawa.renlin.dsl.StatedDsl /** @@ -11,4 +12,5 @@ interface FlowInteractivePalpablePhrasingDsl, PhrasingContentDsl, PalpableContentDsl, - InteractiveContentDsl \ No newline at end of file + InteractiveContentDsl, + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowMetadataPhrasingDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowMetadataPhrasingDsl.kt index 61eb3b3..10d5195 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowMetadataPhrasingDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowMetadataPhrasingDsl.kt @@ -2,6 +2,7 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.integration.FlowMetadataPhrasing +import net.kigawa.renlin.dsl.StatedDsl /** @@ -10,4 +11,5 @@ import net.kigawa.renlin.w3c.category.integration.FlowMetadataPhrasing interface FlowMetadataPhrasingDsl: MetadataContentDsl, FlowContentDsl, - PhrasingContentDsl \ No newline at end of file + PhrasingContentDsl, + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowMetadataPhrasingScriptSupportingDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowMetadataPhrasingScriptSupportingDsl.kt index 3b0061d..fcec3ad 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowMetadataPhrasingScriptSupportingDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowMetadataPhrasingScriptSupportingDsl.kt @@ -2,6 +2,7 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.integration.FlowMetadataPhrasingScriptSupporting +import net.kigawa.renlin.dsl.StatedDsl /** @@ -11,4 +12,5 @@ interface FlowMetadataPhrasingScriptSupportingDsl, FlowContentDsl, PhrasingContentDsl, - ScriptSupportingContentDsl \ No newline at end of file + ScriptSupportingContentDsl, + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPalpableDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPalpableDsl.kt index 5dd3772..b8687ce 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPalpableDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPalpableDsl.kt @@ -2,6 +2,7 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.integration.FlowPalpable +import net.kigawa.renlin.dsl.StatedDsl /** @@ -9,4 +10,5 @@ import net.kigawa.renlin.w3c.category.integration.FlowPalpable */ interface FlowPalpableDsl: FlowContentDsl, - PalpableContentDsl \ No newline at end of file + PalpableContentDsl, + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPalpablePhrasingDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPalpablePhrasingDsl.kt index 8905cc9..ef5d21b 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPalpablePhrasingDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPalpablePhrasingDsl.kt @@ -2,6 +2,7 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.integration.FlowPalpablePhrasing +import net.kigawa.renlin.dsl.StatedDsl /** @@ -10,4 +11,5 @@ import net.kigawa.renlin.w3c.category.integration.FlowPalpablePhrasing interface FlowPalpablePhrasingDsl: FlowContentDsl, PalpableContentDsl, - PhrasingContentDsl \ No newline at end of file + PhrasingContentDsl, + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPhrasingDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPhrasingDsl.kt index ff9dddf..e44f173 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPhrasingDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FlowPhrasingDsl.kt @@ -2,6 +2,7 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.integration.FlowPhrasing +import net.kigawa.renlin.dsl.StatedDsl /** @@ -9,4 +10,5 @@ import net.kigawa.renlin.w3c.category.integration.FlowPhrasing */ interface FlowPhrasingDsl: FlowContentDsl, - PhrasingContentDsl \ No newline at end of file + PhrasingContentDsl, + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FormAssociatedContentDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FormAssociatedContentDsl.kt index bb617b2..f2cf278 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FormAssociatedContentDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/FormAssociatedContentDsl.kt @@ -2,9 +2,11 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.native.FormAssociatedContent +import net.kigawa.renlin.dsl.StatedDsl /** * DSL for FormAssociatedContent */ -interface FormAssociatedContentDsl \ No newline at end of file +interface FormAssociatedContentDsl: + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/InteractiveContentDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/InteractiveContentDsl.kt index dc14fe3..345dc91 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/InteractiveContentDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/InteractiveContentDsl.kt @@ -2,9 +2,11 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.native.InteractiveContent +import net.kigawa.renlin.dsl.StatedDsl /** * DSL for InteractiveContent */ -interface InteractiveContentDsl \ No newline at end of file +interface InteractiveContentDsl: + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/MetadataContentDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/MetadataContentDsl.kt index d696b57..bba70f8 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/MetadataContentDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/MetadataContentDsl.kt @@ -2,9 +2,11 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.native.MetadataContent +import net.kigawa.renlin.dsl.StatedDsl /** * DSL for MetadataContent */ -interface MetadataContentDsl \ No newline at end of file +interface MetadataContentDsl: + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/PalpableContentDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/PalpableContentDsl.kt index 14f0f18..cfb5419 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/PalpableContentDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/PalpableContentDsl.kt @@ -2,9 +2,11 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.native.PalpableContent +import net.kigawa.renlin.dsl.StatedDsl /** * DSL for PalpableContent */ -interface PalpableContentDsl \ No newline at end of file +interface PalpableContentDsl: + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/PhrasingContentDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/PhrasingContentDsl.kt index e18bac5..312c754 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/PhrasingContentDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/PhrasingContentDsl.kt @@ -2,9 +2,11 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.native.PhrasingContent +import net.kigawa.renlin.dsl.StatedDsl /** * DSL for PhrasingContent */ -interface PhrasingContentDsl \ No newline at end of file +interface PhrasingContentDsl: + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/ScriptSupportingContentDsl.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/ScriptSupportingContentDsl.kt index fcacff8..d635078 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/ScriptSupportingContentDsl.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/category/dsl/ScriptSupportingContentDsl.kt @@ -2,9 +2,11 @@ package net.kigawa.renlin.w3c.category.dsl import net.kigawa.renlin.w3c.category.native.ScriptSupportingContent +import net.kigawa.renlin.dsl.StatedDsl /** * DSL for ScriptSupportingContent */ -interface ScriptSupportingContentDsl \ No newline at end of file +interface ScriptSupportingContentDsl: + StatedDsl \ No newline at end of file diff --git a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/event/tag/click.kt b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/event/tag/click.kt index 34eb140..d3ed3b2 100644 --- a/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/event/tag/click.kt +++ b/renlin/src/commonMain/kotlin/net/kigawa/renlin/w3c/event/tag/click.kt @@ -1,9 +1,10 @@ package net.kigawa.renlin.w3c.event.tag import net.kigawa.renlin.dsl.StatedDsl +import net.kigawa.renlin.w3c.category.dsl.FlowContentDsl import net.kigawa.renlin.w3c.category.native.EventTarget import net.kigawa.renlin.w3c.event.WebPointerEvent -fun StatedDsl.onClick(block: (WebPointerEvent)-> Unit) { +fun FlowContentDsl<*>.onClick(block: (WebPointerEvent)-> Unit) { this.dslStateData?.onClick = block } \ No newline at end of file diff --git a/sample/src/commonMain/kotlin/net/kigawa/renlin/sample/Sub.kt b/sample/src/commonMain/kotlin/net/kigawa/renlin/sample/Sub.kt index f174a9e..48ca63d 100644 --- a/sample/src/commonMain/kotlin/net/kigawa/renlin/sample/Sub.kt +++ b/sample/src/commonMain/kotlin/net/kigawa/renlin/sample/Sub.kt @@ -23,7 +23,9 @@ class Sub { val display = div.argComponent { block: StatedDsl.() -> Unit -> div("hero-section") { - a {} + a { + onClick { } + } block() t("Renlin") css {