Convenience functions
This commit is contained in:
parent
9355eefb65
commit
04c430d9ce
@ -344,15 +344,18 @@ class MutableMorphDelegate<M : MutableMetaNode<M>, T : Configurable>(
|
|||||||
val meta: M,
|
val meta: M,
|
||||||
private val key: String? = null,
|
private val key: String? = null,
|
||||||
private val converter: (Meta) -> T
|
private val converter: (Meta) -> T
|
||||||
) :
|
) : ReadWriteProperty<Any?, T?> {
|
||||||
ReadWriteProperty<Any?, T> {
|
override fun getValue(thisRef: Any?, property: KProperty<*>): T? {
|
||||||
override fun getValue(thisRef: Any?, property: KProperty<*>): T {
|
return meta[key ?: property.name]?.node?.let(converter)
|
||||||
return converter(meta[key ?: property.name]?.node ?: EmptyMeta)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {
|
override fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) {
|
||||||
|
if (value == null) {
|
||||||
|
meta.remove(key ?: property.name)
|
||||||
|
} else {
|
||||||
meta[key ?: property.name] = value.config
|
meta[key ?: property.name] = value.config
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ReadWriteDelegateWrapper<T, R>(
|
class ReadWriteDelegateWrapper<T, R>(
|
||||||
|
@ -117,3 +117,6 @@ fun Name.withIndex(index: String): Name {
|
|||||||
tokens.add(last)
|
tokens.add(last)
|
||||||
return Name(tokens)
|
return Name(tokens)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
operator fun <T> Map<Name, T>.get(name: String) = get(name.toName())
|
||||||
|
operator fun <T> MutableMap<Name, T>.set(name: String, value: T) = set(name.toName(), value)
|
Loading…
Reference in New Issue
Block a user