From 2458b8263facb48692433359728d27e692089f33 Mon Sep 17 00:00:00 2001 From: twisti <76837088+twisti-dev@users.noreply.github.com> Date: Wed, 27 May 2026 21:30:02 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(constraints):=20add=20configSi?= =?UTF-8?q?zeOrNull=20function=20for=20collection=20size=20retrieval?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - implement configSizeOrNull to return size for Collection, Map, Array, CharSequence, and StringOrDefault - handle null cases gracefully by returning null --- .../config/constraints/CollectionConstraintUtils.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/constraints/CollectionConstraintUtils.kt diff --git a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/constraints/CollectionConstraintUtils.kt b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/constraints/CollectionConstraintUtils.kt new file mode 100644 index 00000000..8231b97e --- /dev/null +++ b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/constraints/CollectionConstraintUtils.kt @@ -0,0 +1,13 @@ +package dev.slne.surf.api.core.config.constraints + +import dev.slne.surf.api.core.config.type.StringOrDefault + +internal tailrec fun Any?.configSizeOrNull(): Int? = when (this) { + null -> null + is Collection<*> -> size + is Map<*, *> -> size + is Array<*> -> size + is CharSequence -> length + is StringOrDefault -> value?.configSizeOrNull() + else -> null +} \ No newline at end of file