Skip to content

Commit

Permalink
Groovy用のDSLを追加
Browse files Browse the repository at this point in the history
  • Loading branch information
kitakkun committed Jan 1, 2024
1 parent 5f2cb27 commit 003abf2
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,25 @@
package com.github.kitakkun.backintime.extension

import com.github.kitakkun.backintime.plugin.extension.ValueContainerConfig
import groovy.lang.Closure
import kotlinx.serialization.Serializable

@Serializable
open class BackInTimeExtension(
var enabled: Boolean = true,
val valueContainers: MutableList<ValueContainerConfig> = mutableListOf(),
) {
// KTS用
fun valueContainers(configuration: ValueContainersScope.() -> Unit) {
val scope = ValueContainersScope().apply(configuration)
valueContainers.addAll(scope.containers)
}

// Groovy用
fun valueContainers(closure: Closure<ValueContainersScope>) {
val scope = ValueContainersScope()
closure.delegate = scope
closure.call()
valueContainers.addAll(scope.containers)
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,26 @@
package com.github.kitakkun.backintime.extension

import com.github.kitakkun.backintime.plugin.extension.ValueContainerConfig
import groovy.lang.Closure

class ValueContainersScope {
var containers: MutableList<ValueContainerConfig> = mutableListOf()
private set

// KTS用
fun container(configuration: ValueContainerConfig.() -> Unit) {
val config = ValueContainerConfig().apply(configuration)
this.containers.add(config)
}

// Groovy用
fun container(closure: Closure<ValueContainerConfig>) {
val config = ValueContainerConfig()
closure.delegate = config
closure.call()
this.containers.add(config)
}

fun androidValueContainers() {
container {
className = "androidx.lifecycle.MutableLiveData"
Expand Down

0 comments on commit 003abf2

Please sign in to comment.