mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-20 22:29:16 +02:00
Adding optional start/end params to string-find[-right].
This commit is contained in:
parent
924352921a
commit
eec5aaa0b4
1 changed files with 8 additions and 4 deletions
|
@ -29,7 +29,9 @@
|
||||||
|
|
||||||
(define (string-find str x . o)
|
(define (string-find str x . o)
|
||||||
(let ((pred (make-char-predicate x))
|
(let ((pred (make-char-predicate x))
|
||||||
(end (string-cursor-end str)))
|
(end (if (and (pair? o) (pair? (cdr o)))
|
||||||
|
(cadr o)
|
||||||
|
(string-cursor-end str))))
|
||||||
(let lp ((i (if (pair? o) (car o) (string-cursor-start str))))
|
(let lp ((i (if (pair? o) (car o) (string-cursor-start str))))
|
||||||
(cond ((string-cursor>=? i end) end)
|
(cond ((string-cursor>=? i end) end)
|
||||||
((pred (string-cursor-ref str i)) i)
|
((pred (string-cursor-ref str i)) i)
|
||||||
|
@ -37,10 +39,12 @@
|
||||||
|
|
||||||
(define (string-find-right str x . o)
|
(define (string-find-right str x . o)
|
||||||
(let ((pred (make-char-predicate x))
|
(let ((pred (make-char-predicate x))
|
||||||
(end (string-cursor-start str)))
|
(start (if (pair? o) (car o) (string-cursor-start str))))
|
||||||
(let lp ((i (if (pair? o) (car o) (string-cursor-end str))))
|
(let lp ((i (if (and (pair? o) (pair? (cdr o)))
|
||||||
|
(cadr o)
|
||||||
|
(string-cursor-end str))))
|
||||||
(let ((i2 (string-cursor-prev str i)))
|
(let ((i2 (string-cursor-prev str i)))
|
||||||
(cond ((string-cursor<? i2 end) end)
|
(cond ((string-cursor<? i2 start) start)
|
||||||
((pred (string-cursor-ref str i2)) i)
|
((pred (string-cursor-ref str i2)) i)
|
||||||
(else (lp i2)))))))
|
(else (lp i2)))))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue