+2000-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * boot-9.scm (read-delimited), lineio.scm
+ (make-line-buffering-input-port), regex.scm (match:prefix,
+ match:suffix, match:substring, regexp-substitute/global), slib.scm
+ (slib-parent-dir), string-fun.scm (split-after-char,
+ split-before-char, split-discarding-char, split-after-char-last,
+ split-before-char-last, split-discarding-char-last,
+ split-before-predicate, split-after-predicate,
+ split-discarding-predicate, separate-fields-discarding-char,
+ separate-fields-after-char, separate-fields-before-char,
+ string-prefix-predicate, sans-surrounding-whitespace,
+ sans-trailing-whitespace, sans-leading-whitespace,
+ sans-final-newline): Use substring instead of
+ make-shared-substring.
+
2000-11-26 Gary Houston <ghouston@arglist.com>
* boot-9.scm: values?, get-values, values, call-with-values:
(vector-ref match 0))
(define-public (match:prefix match)
- (make-shared-substring (match:string match)
- 0
- (match:start match 0)))
+ (substring (match:string match) 0 (match:start match 0)))
(define-public (match:suffix match)
- (make-shared-substring (match:string match)
- (match:end match 0)))
+ (substring (match:string match) (match:end match 0)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; SCSH compatibility routines.
0))
(start (match:start match matchnum))
(end (match:end match matchnum)))
- (and start end (make-shared-substring (match:string match)
- start
- end))))
+ (and start end (substring (match:string match) start end))))
(define-public (string-match pattern str . args)
(let ((rx (make-regexp pattern))
(let next-match ((matches (list-matches regexp string))
(start 0))
(if (null? matches)
- (display (make-shared-substring string start) port)
+ (display (substring string start) port)
(let ((m (car matches)))
;; Process all of the items for this match. Don't use
((procedure? item) (display (item m) port))
((eq? item 'pre)
(display
- (make-shared-substring string start (match:start m))
+ (substring string start (match:start m))
port))
((eq? item 'post)
(next-match (cdr matches) (match:end m)))
(let ((end (cond
((string-index str char) => 1+)
(else (string-length str)))))
- (ret (make-shared-substring str 0 end)
- (make-shared-substring str end))))
+ (ret (substring str 0 end)
+ (substring str end))))
(define-public (split-before-char char str ret)
(let ((end (or (string-index str char)
(string-length str))))
- (ret (make-shared-substring str 0 end)
- (make-shared-substring str end))))
+ (ret (substring str 0 end)
+ (substring str end))))
(define-public (split-discarding-char char str ret)
(let ((end (string-index str char)))
(if (not end)
(ret str "")
- (ret (make-shared-substring str 0 end)
- (make-shared-substring str (1+ end))))))
+ (ret (substring str 0 end)
+ (substring str (1+ end))))))
(define-public (split-after-char-last char str ret)
(let ((end (cond
((string-rindex str char) => 1+)
(else 0))))
- (ret (make-shared-substring str 0 end)
- (make-shared-substring str end))))
+ (ret (substring str 0 end)
+ (substring str end))))
(define-public (split-before-char-last char str ret)
(let ((end (or (string-rindex str char) 0)))
- (ret (make-shared-substring str 0 end)
- (make-shared-substring str end))))
+ (ret (substring str 0 end)
+ (substring str end))))
(define-public (split-discarding-char-last char str ret)
(let ((end (string-rindex str char)))
(if (not end)
(ret str "")
- (ret (make-shared-substring str 0 end)
- (make-shared-substring str (1+ end))))))
+ (ret (substring str 0 end)
+ (substring str (1+ end))))))
(define-public (split-before-predicate pred str ret)
(let loop ((n 0))
(cond
((= n (string-length str)) (ret str ""))
((not (pred (string-ref str n))) (loop (1+ n)))
- (else (ret (make-shared-substring str 0 n)
- (make-shared-substring str n))))))
+ (else (ret (substring str 0 n)
+ (substring str n))))))
(define-public (split-after-predicate pred str ret)
(let loop ((n 0))
(cond
((= n (string-length str)) (ret str ""))
((not (pred (string-ref str n))) (loop (1+ n)))
- (else (ret (make-shared-substring str 0 (1+ n))
- (make-shared-substring str (1+ n)))))))
+ (else (ret (substring str 0 (1+ n))
+ (substring str (1+ n)))))))
(define-public (split-discarding-predicate pred str ret)
(let loop ((n 0))
(cond
((= n (string-length str)) (ret str ""))
((not (pred (string-ref str n))) (loop (1+ n)))
- (else (ret (make-shared-substring str 0 n)
- (make-shared-substring str (1+ n)))))))
+ (else (ret (substring str 0 n)
+ (substring str (1+ n)))))))
(define-public (separate-fields-discarding-char ch str ret)
(let loop ((fields '())
(str str))
(cond
((string-rindex str ch)
- => (lambda (w) (loop (cons (make-shared-substring str (+ 1 w)) fields)
- (make-shared-substring str 0 w))))
+ => (lambda (w) (loop (cons (substring str (+ 1 w)) fields)
+ (substring str 0 w))))
(else (apply ret str fields)))))
(define-public (separate-fields-after-char ch str ret)
(str str))
(cond
((string-index str ch)
- => (lambda (w) (loop (cons (make-shared-substring str 0 (+ 1 w)) fields)
- (make-shared-substring str (+ 1 w)))))
+ => (lambda (w) (loop (cons (substring str 0 (+ 1 w)) fields)
+ (substring str (+ 1 w)))))
(else (apply ret str fields))))))
(define-public (separate-fields-before-char ch str ret)
(str str))
(cond
((string-rindex str ch)
- => (lambda (w) (loop (cons (make-shared-substring str w) fields)
- (make-shared-substring str 0 w))))
+ => (lambda (w) (loop (cons (substring str w) fields)
+ (substring str 0 w))))
(else (apply ret str fields)))))
\f
;;;
;;; (define-public ((string-prefix-predicate pred?) prefix str)
;;; (and (<= (string-length prefix) (string-length str))
-;;; (pred? prefix (make-shared-substring str 0 (string-length prefix)))))
+;;; (pred? prefix (substring str 0 (string-length prefix)))))
;;;
;;; (define-public string-prefix=? (string-prefix-predicate string=?))
;;;
(define-public ((string-prefix-predicate pred?) prefix str)
(and (<= (string-length prefix) (string-length str))
- (pred? prefix (make-shared-substring str 0 (string-length prefix)))))
+ (pred? prefix (substring str 0 (string-length prefix)))))
(define-public string-prefix=? (string-prefix-predicate string=?))
(set! end (1- end)))
(if (< end st)
""
- (make-shared-substring s st end))))
+ (substring s st end))))
(define-public (sans-trailing-whitespace s)
(let ((st 0)
(set! end (1- end)))
(if (< end st)
""
- (make-shared-substring s st end))))
+ (substring s st end))))
(define-public (sans-leading-whitespace s)
(let ((st 0)
(set! st (1+ st)))
(if (< end st)
""
- (make-shared-substring s st end))))
+ (substring s st end))))
(define-public (sans-final-newline str)
(cond
str)
((char=? #\nl (string-ref str (1- (string-length str))))
- (make-shared-substring str 0 (1- (string-length str))))
+ (substring str 0 (1- (string-length str))))
(else str)))
\f