diff --git a/gradle.properties b/gradle.properties index 6617a13..c4191ac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ kotlin.code.style=official specifyKotlinAsDependency=false projectGroup=ru.dbotthepony.kommons -projectVersion=2.9.2 +projectVersion=2.9.3 guavaDepVersion=33.0.0 gsonDepVersion=2.8.9 diff --git a/src/main/kotlin/ru/dbotthepony/kommons/util/Delegate.kt b/src/main/kotlin/ru/dbotthepony/kommons/util/Delegate.kt index db45866..bda7a8b 100644 --- a/src/main/kotlin/ru/dbotthepony/kommons/util/Delegate.kt +++ b/src/main/kotlin/ru/dbotthepony/kommons/util/Delegate.kt @@ -55,6 +55,20 @@ interface Delegate : Supplier, Consumer { @Deprecated("Warning: Using read-only property as delegate") constructor(prop: KProperty0) : this(prop::get, Consumer { }) } + + companion object { + /** + * Returns smart box if [getter] or [setter] is not passthrough + */ + @JvmStatic + fun maskSmart(value: V, getter: DelegateGetter, setter: DelegateSetter): Delegate { + if (getter === DelegateGetter.passthrough() && setter === DelegateSetter.passthrough()) { + return Box(value) + } else { + return SmartBox(value, getter, setter) + } + } + } } operator fun Supplier.getValue(ref: Any?, property: KProperty<*>): V {