Add error checking to new string functions.
This commit is contained in:
parent
ae5b980e07
commit
2b1202a6a6
|
@ -143,6 +143,10 @@
|
||||||
(and (string? x) (not (zero? (string-length x)))))
|
(and (string? x) (not (zero? (string-length x)))))
|
||||||
|
|
||||||
(define (string-prefix? str prefix)
|
(define (string-prefix? str prefix)
|
||||||
|
(unless (string? str)
|
||||||
|
(raise-argument-error 'string-prefix? "string?" str))
|
||||||
|
(unless (string? prefix)
|
||||||
|
(raise-argument-error 'string-prefix? "string?" prefix))
|
||||||
(define l1 (string-length str))
|
(define l1 (string-length str))
|
||||||
(define l2 (string-length prefix))
|
(define l2 (string-length prefix))
|
||||||
(let loop ([i 0])
|
(let loop ([i 0])
|
||||||
|
@ -153,6 +157,10 @@
|
||||||
(loop (add1 i)))])))
|
(loop (add1 i)))])))
|
||||||
|
|
||||||
(define (string-suffix? str suffix)
|
(define (string-suffix? str suffix)
|
||||||
|
(unless (string? str)
|
||||||
|
(raise-argument-error 'string-suffix? "string?" str))
|
||||||
|
(unless (string? suffix)
|
||||||
|
(raise-argument-error 'string-suffix? "string?" suffix))
|
||||||
(define l2 (string-length suffix))
|
(define l2 (string-length suffix))
|
||||||
(define offset (- (string-length str) l2))
|
(define offset (- (string-length str) l2))
|
||||||
(and (not (negative? offset)) ;; Suffix isn't longer than string
|
(and (not (negative? offset)) ;; Suffix isn't longer than string
|
||||||
|
@ -162,6 +170,10 @@
|
||||||
(loop (add1 i+o) (add1 i)))))))
|
(loop (add1 i+o) (add1 i)))))))
|
||||||
|
|
||||||
(define (string-contains? str sub)
|
(define (string-contains? str sub)
|
||||||
|
(unless (string? str)
|
||||||
|
(raise-argument-error 'string-contains? "string?" str))
|
||||||
|
(unless (string? sub)
|
||||||
|
(raise-argument-error 'string-prefix? "string?" sub))
|
||||||
(define L1 (string-length str))
|
(define L1 (string-length str))
|
||||||
(define L2 (string-length sub))
|
(define L2 (string-length sub))
|
||||||
(define d (- L1 L2))
|
(define d (- L1 L2))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user