diff options
| author | Rose Hogenson <rhogenson@posteo.net> | 2022-01-09 16:28:52 -0800 |
|---|---|---|
| committer | Rose Hogenson <rhogenson@posteo.net> | 2022-01-09 16:28:52 -0800 |
| commit | b482a919615c0a5755a6828ad77d13e6c1b8b7a2 (patch) | |
| tree | f9e6f6b5e2766e441fbde7acafd4f98e0476dee5 /strings.csc | |
| parent | Redo the testing framework. (diff) | |
| download | chromatopelma-b482a919615c0a5755a6828ad77d13e6c1b8b7a2.tar.zst | |
Remove str- prefixes from the strings library.
Not very scheme.
Diffstat (limited to 'strings.csc')
| -rw-r--r-- | strings.csc | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/strings.csc b/strings.csc index 963565c..0828363 100644 --- a/strings.csc +++ b/strings.csc @@ -1,8 +1,8 @@ (define-library (csc strings) (export - str-find - str-not-found-error? - str-prefix? + find + not-found-error? + prefix? str-quote) (import (scheme base) (scheme case-lambda) @@ -10,13 +10,12 @@ (begin - (define str-prefix? - (let ((str-prefix?' (lambda (prefix str start) - (and (<= (string-length prefix) (- (string-length str) start)) - (string=? prefix (substring str start (+ start (string-length prefix)))))))) - (case-lambda - ((prefix str) (str-prefix?' prefix str 0)) - ((prefix str start) (str-prefix?' prefix str start))))) + (define prefix? + (case-lambda + ((prefix str) (prefix? prefix str 0)) + ((prefix str start) + (and (<= (string-length prefix) (- (string-length str) start)) + (string=? prefix (substring str start (+ start (string-length prefix)))))))) (define (str-quote s) @@ -25,18 +24,17 @@ (get-output-string out))) - (define-record-type <str-not-found-error> - (make-str-not-found-error) - str-not-found-error?) + (define-record-type <not-found-error> + (make-not-found-error) + not-found-error?) - (define str-find - (let ((str-find' (lambda (match str start end) - (let loop ((i start)) - (cond ((>= i end) (raise (make-str-not-found-error))) - ((str-prefix? match str i) i) - (else (loop (+ 1 i)))))))) - (case-lambda - ((match str) (str-find' match str 0 (string-length str))) - ((match str start) (str-find' match str start (string-length str))) - ((match str start end) (str-find' match str start end))))))) + (define find + (case-lambda + ((match str) (find match str 0 (string-length str))) + ((match str start) (find match str start (string-length str))) + ((match str start end) + (let loop ((i start)) + (cond ((>= i end) (raise (make-not-found-error))) + ((prefix? match str i) i) + (else (loop (+ 1 i)))))))))) |
