From c4cc4e499073248a82446965d570030141b730c6 Mon Sep 17 00:00:00 2001 From: RayPals Date: Mon, 1 Jun 2026 00:55:40 +0200 Subject: [PATCH] Add lib/text.claro from Claro v1.17.26 zip --- lib/text.claro | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 lib/text.claro diff --git a/lib/text.claro b/lib/text.claro new file mode 100644 index 0000000..77e6eea --- /dev/null +++ b/lib/text.claro @@ -0,0 +1,76 @@ +# Claro Standard Library: text +# Use: IMPORT "lib/text.claro" AS text +EXPORT ALL + +TEACH lower TAKES s + RETURN LOWER s +LEARNED + +TEACH upper TAKES s + RETURN UPPER s +LEARNED + +TEACH trim TAKES s + RETURN TRIM s +LEARNED + +TEACH contains TAKES s, part + FIND part IN s AS pos + IF pos = 0 + RETURN NO + ELSE + RETURN YES + ENDIF +LEARNED + +TEACH startswith TAKES s, prefix + FIND prefix IN s AS pos + IF pos = 1 + RETURN YES + ELSE + RETURN NO + ENDIF +LEARNED + +TEACH endswith TAKES s, suffix + LENGTH s AS ls + LENGTH suffix AS lp + IF lp = 0 + RETURN YES + ENDIF + IF lp > ls + RETURN NO + ENDIF + SUBSTR s FROM (ls - lp + 1) LEN lp AS tail + IF tail = suffix + RETURN YES + ELSE + RETURN NO + ENDIF +LEARNED + +TEACH replace TAKES s, old, new + FIND old IN s AS pos + IF pos = 0 + RETURN s + ENDIF + LENGTH old AS lo + SUBSTR s FROM 1 LEN (pos - 1) AS left + SUBSTR s FROM (pos + lo) AS right + RETURN left + new + right +LEARNED + +TEACH split2 TAKES s, sep + SET out TO LIST + FIND sep IN s AS pos + IF pos = 0 + ADD s TO out + RETURN out + ENDIF + LENGTH sep AS ls + SUBSTR s FROM 1 LEN (pos - 1) AS a + SUBSTR s FROM (pos + ls) AS b + ADD a TO out + ADD b TO out + RETURN out +LEARNED