Skip to content

Commit cb05ed4

Browse files
authored
Merge pull request #5 from Code-Sakura/feature/event
Feature/event
2 parents 5e4f12d + b31ee15 commit cb05ed4

37 files changed

+181
-99
lines changed

convention-plugins/src/main/kotlin/renlin.common.gradle.kts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
2+
13
plugins {
24
kotlin("multiplatform")
35

@@ -6,10 +8,10 @@ plugins {
68

79
kotlin {
810
jvm {
9-
// @OptIn(ExperimentalKotlinGradlePluginApi::class)
10-
// compilerOptions {
11-
// freeCompilerArgs = listOf("-Xjsr305=strict")
12-
// }
11+
@OptIn(ExperimentalKotlinGradlePluginApi::class)
12+
compilerOptions {
13+
freeCompilerArgs = listOf("-Xjsr305=strict")
14+
}
1315
}
1416
js {
1517
browser {
@@ -18,7 +20,6 @@ kotlin {
1820
useChromeHeadless()
1921
}
2022
}
21-
binaries.executable()
2223
}
2324
}
2425
sourceSets["commonMain"].dependencies {

generate/build.gradle.kts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,8 @@ kotlin {
2121
}
2222
js {
2323
browser {
24-
testTask {
25-
useKarma {
26-
useChromeHeadless()
27-
}
28-
}
2924
binaries.executable()
3025
}
3126
}
3227

3328
}
34-
Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,31 @@
11
package generator
22

33
import java.io.File
4+
import tagCategories
5+
import categoryParents
46

57
class NativeGenerator(val categoryNativeOutputDir: String) {
68
fun generate(categories: Map<String, Set<String>>) {
9+
// 親カテゴリーの情報を収集
10+
val allParentCategories = categoryParents.toMutableMap()
11+
tagCategories.forEach { tagInfo ->
12+
allParentCategories.putAll(tagInfo.tagCategories.parentCategories)
13+
allParentCategories.putAll(tagInfo.allowedCategories.parentCategories)
14+
}
715

816
// Unionクラスの生成
917
categories.forEach { (name, deps) ->
1018
val categoryName = name
1119

20+
// 親カテゴリーを取得
21+
val parentCategory = allParentCategories[name]
22+
23+
// 継承するインターフェースのリスト
24+
val interfaces = if (parentCategory != null) {
25+
(deps + "ContentCategory" + parentCategory).joinToString(", ")
26+
} else {
27+
(deps + "ContentCategory").joinToString(", ")
28+
}
1229

1330
val fileContent = """
1431
package net.kigawa.renlin.w3c.category.native
@@ -17,14 +34,14 @@ class NativeGenerator(val categoryNativeOutputDir: String) {
1734
1835
/**
1936
* Union to ${deps.joinToString(", ")}
37+
* ${if (parentCategory != null) "Parent: $parentCategory" else ""}
2038
*/
21-
interface $categoryName : ${(deps + "ContentCategory").joinToString(", ")}
39+
interface $categoryName : $interfaces
2240
""".trimIndent()
2341

2442
val file = File("$categoryNativeOutputDir/${categoryName}.kt")
2543
file.writeText(fileContent)
2644
println("Generated native: ${categoryName}.kt")
2745
}
28-
2946
}
30-
}
47+
}

generate/src/jvmMain/kotlin/model/AllowedCategories.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package model
22

33
data class AllowedCategories(
44
override val categories: Set<String>,
5+
override val parentCategories: Map<String, String> = emptyMap(),
56
) : Categories {
67
constructor(vararg categories: String) : this(categories.toSet())
7-
}
8+
constructor(vararg categories: String, parentCategories: Map<String, String>) : this(categories.toSet(), parentCategories)
9+
constructor(categories: Set<String>, vararg parentCategoryPairs: Pair<String, String>) : this(categories, parentCategoryPairs.toMap())
10+
}

generate/src/jvmMain/kotlin/model/Categories.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package model
22

33
interface Categories {
44
val categories: Set<String>
5+
val parentCategories: Map<String, String>
6+
57
fun connectedStr(pluralSuffix: String = ""): String {
68
// 複数のカテゴリーがある場合、交差インターフェース名を生成
79
if (categories.size > 1) {
@@ -13,4 +15,4 @@ interface Categories {
1315
// 单一カテゴリーの場合
1416
return categories.firstOrNull() ?: "ContentCategory"
1517
}
16-
}
18+
}

generate/src/jvmMain/kotlin/model/TagCategories.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package model
22

33
data class TagCategories(
44
override val categories: Set<String>,
5+
override val parentCategories: Map<String, String> = emptyMap(),
56
) : Categories {
67
constructor(vararg categories: String) : this(categories.toSet())
7-
}
8+
constructor(vararg categories: String, parentCategories: Map<String, String>) : this(categories.toSet(), parentCategories)
9+
constructor(categories: Set<String>, vararg parentCategoryPairs: Pair<String, String>) : this(categories, parentCategoryPairs.toMap())
10+
}

generate/src/jvmMain/kotlin/tagCategories.kt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,25 @@ import model.AllowedCategories
22
import model.TagCategories
33
import model.TagInfo
44

5+
// カテゴリーの親子関係を定義
6+
val categoryParents = mapOf(
7+
"PhrasingContent" to "FlowContent",
8+
"HeadingContent" to "FlowContent",
9+
"SectioningContent" to "FlowContent",
10+
"EmbeddedContent" to "PhrasingContent",
11+
"InteractiveContent" to "PhrasingContent",
12+
"FlowContent" to "EventTarget",
13+
"MetaDataContent" to "FlowContent",
14+
"PhrasingPhrasingContent" to "PhrasingContent",
15+
"FlowPhrasingContent" to "FlowContent",
16+
"MetaDataPhrasingContent" to "MetaDataContent",
17+
"FlowMetaDataContent" to "FlowContent",
18+
"HeadingPhrasingContent" to "HeadingContent",
19+
"SectioningRoot" to "Any",
20+
"SectioningHeadings" to "HeadingContent",
21+
"FlowSectioningContent" to "FlowContent",
22+
)
23+
524
// 元のコードの並び順を維持するためのタグリスト
625
val tagCategories = setOf(
726
// Main root
@@ -316,4 +335,4 @@ val tagCategories = setOf(
316335
),
317336
AllowedCategories()
318337
)
319-
)
338+
)

renlin/build.gradle.kts

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import com.vanniktech.maven.publish.JavadocJar
22
import com.vanniktech.maven.publish.KotlinMultiplatform
33
import com.vanniktech.maven.publish.SonatypeHost
4-
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
54

65
plugins {
76
alias(libs.plugins.kotlinMultiplatform)
@@ -19,22 +18,6 @@ dependencies {
1918
}
2019

2120
kotlin {
22-
jvm {
23-
@OptIn(ExperimentalKotlinGradlePluginApi::class)
24-
compilerOptions {
25-
freeCompilerArgs = listOf("-Xjsr305=strict")
26-
}
27-
}
28-
js {
29-
browser {
30-
testTask {
31-
useKarma {
32-
useChromeHeadless()
33-
}
34-
}
35-
binaries.executable()
36-
}
37-
}
3821
sourceSets["commonMain"].dependencies {
3922
implementation(libs.kotlinx.coroutines.core)
4023
implementation(libs.kotlin.stdlib)

renlin/src/commonMain/kotlin/net/kigawa/renlin/dsl/Dsl.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package net.kigawa.renlin.dsl
22

33
import net.kigawa.hakate.api.state.State
44
import net.kigawa.renlin.Html
5+
import net.kigawa.renlin.state.DslStateData
56

67
@Html
78
interface Dsl {
89
/**
910
* このDSLで使用されているすべての状態のセット。
1011
*/
1112
val states: Set<State<*>>
13+
val dslStateData: DslStateData?
1214
}

renlin/src/commonMain/kotlin/net/kigawa/renlin/dsl/DslBase.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ package net.kigawa.renlin.dsl
22

33
import net.kigawa.hakate.api.state.State
44
import net.kigawa.renlin.state.DslState
5+
import net.kigawa.renlin.state.DslStateData
56
import net.kigawa.renlin.w3c.category.ContentCategory
67

78
abstract class DslBase<CONTENT_CATEGORY : ContentCategory>(
8-
override val dslState: DslState
9+
override val dslState: DslState,
910
) : StatedDsl<CONTENT_CATEGORY> {
1011
private val subDsls = mutableListOf<RegisteredDslData>()
1112
override val states = mutableSetOf<State<*>>()
13+
override val dslStateData: DslStateData? = dslState.dslStateData()
1214

1315
override fun registerSubDsl(registeredDslData: RegisteredDslData) {
1416

0 commit comments

Comments
 (0)