fixing string-trim resulting in empty string

This commit is contained in:
Alex Shinn 2012-07-23 05:54:33 +09:00
parent 90ba17a21a
commit b682d77971
2 changed files with 9 additions and 4 deletions

View file

@ -81,10 +81,12 @@
(string-skip-right str pred)))) (string-skip-right str pred))))
(define (string-trim str . o) (define (string-trim str . o)
(let ((pred (make-char-predicate (if (pair? o) (car o) #\space)))) (let* ((pred (if (pair? o) (car o) #\space))
(substring-cursor str (left (string-skip str pred))
(string-skip str pred) (right (string-skip-right str pred)))
(string-skip-right str pred)))) (if (string-cursor>=? left right)
""
(substring-cursor str left right))))
(define (string-mismatch prefix str) (define (string-mismatch prefix str)
(let ((end1 (string-cursor-end prefix)) (let ((end1 (string-cursor-end prefix))

View file

@ -59,6 +59,9 @@
(test "abc" (string-trim " abc")) (test "abc" (string-trim " abc"))
(test "abc" (string-trim "abc ")) (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" "abc"))
(test #t (string-prefix? "abc" "abcde")) (test #t (string-prefix? "abc" "abcde"))