From b682d7797101e15d112f4027ddc4718921b80fd9 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Mon, 23 Jul 2012 05:54:33 +0900 Subject: [PATCH] fixing string-trim resulting in empty string --- lib/chibi/strings.scm | 10 ++++++---- tests/string-tests.scm | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/chibi/strings.scm b/lib/chibi/strings.scm index cdda28e7..74d6b81c 100644 --- a/lib/chibi/strings.scm +++ b/lib/chibi/strings.scm @@ -81,10 +81,12 @@ (string-skip-right str pred)))) (define (string-trim str . o) - (let ((pred (make-char-predicate (if (pair? o) (car o) #\space)))) - (substring-cursor str - (string-skip str pred) - (string-skip-right str pred)))) + (let* ((pred (if (pair? o) (car o) #\space)) + (left (string-skip str pred)) + (right (string-skip-right str pred))) + (if (string-cursor>=? left right) + "" + (substring-cursor str left right)))) (define (string-mismatch prefix str) (let ((end1 (string-cursor-end prefix)) diff --git a/tests/string-tests.scm b/tests/string-tests.scm index c07e44e5..b475f9df 100644 --- a/tests/string-tests.scm +++ b/tests/string-tests.scm @@ -59,6 +59,9 @@ (test "abc" (string-trim " abc")) (test "abc" (string-trim "abc ")) (test "abc" (string-trim " abc ")) +(test "" (string-trim "")) +(test "" (string-trim " ")) +(test "" (string-trim " ")) (test #t (string-prefix? "abc" "abc")) (test #t (string-prefix? "abc" "abcde"))