From bc3a894737ea592db318bbfd5823bddc3d0bb32a Mon Sep 17 00:00:00 2001 From: IgorCielniak Date: Wed, 25 Mar 2026 08:59:35 +0100 Subject: [PATCH] added trim functions --- stdlib/utils.sl | 25 +++++++++++++++++++++++++ tests/str.expected | 3 +++ tests/str.sl | 5 +++++ 3 files changed, 33 insertions(+) diff --git a/stdlib/utils.sl b/stdlib/utils.sl index 33ee478..f6b868a 100644 --- a/stdlib/utils.sl +++ b/stdlib/utils.sl @@ -491,3 +491,28 @@ word splitby_char r> rm_zero_len_str end + +# ltrim [*, addr | len] -> [*, addr, | len] +word ltrim + dup for + over c@ 32 == if + swap 1 + swap 1 - + end + end +end + +# rtrim [*, addr | len] -> [*, addr, | len] +word rtrim + swap tuck swap + swap over + 1 - swap + dup for + over c@ 32 == if + swap 1 - swap 1 - + end + end nip +end + +# trim [*, addr | len] -> [*, addr | len] +word trim + ltrim rtrim +end diff --git a/tests/str.expected b/tests/str.expected index b416080..723c5f9 100644 --- a/tests/str.expected +++ b/tests/str.expected @@ -11,3 +11,6 @@ o wor d he o wor he +|f | +| f| +|f| diff --git a/tests/str.sl b/tests/str.sl index e376911..665091a 100644 --- a/tests/str.sl +++ b/tests/str.sl @@ -21,4 +21,9 @@ word main for puts end "hello world hello world hello" "l" splitby for puts end + + " f " 2dup 2dup + 124 putc ltrim write_buf 124 putc cr + 124 putc rtrim write_buf 124 putc cr + 124 putc trim write_buf 124 putc cr end