fixed mangled comment.
[bpt/guile.git] / ice-9 / string-fun.scm
index 1973ef4..8470e39 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; string-fun.scm --- string manipulation functions
 ;;;;
-;;;;   Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+;;;;   Copyright (C) 1995, 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
 ;;;; 
 ;;;; This program is free software; you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
 ;;;; along with this software; see the file COPYING.  If not, write to
 ;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 ;;;; Boston, MA 02111-1307 USA
+;;;;
+;;;; As a special exception, the Free Software Foundation gives permission
+;;;; for additional uses of the text contained in its release of GUILE.
+;;;;
+;;;; The exception is that, if you link the GUILE library with other files
+;;;; to produce an executable, this does not by itself cause the
+;;;; resulting executable to be covered by the GNU General Public License.
+;;;; Your use of that executable is in no way restricted on account of
+;;;; linking the GUILE library code into it.
+;;;;
+;;;; This exception does not however invalidate any other reasons why
+;;;; the executable file might be covered by the GNU General Public License.
+;;;;
+;;;; This exception applies only to the code released by the
+;;;; Free Software Foundation under the name GUILE.  If you copy
+;;;; code from other Free Software Foundation releases into a copy of
+;;;; GUILE, as the General Public License permits, the exception does
+;;;; not apply to the code that you add in this way.  To avoid misleading
+;;;; anyone as to the status of such modified files, you must delete
+;;;; this exception notice from them.
+;;;;
+;;;; If you write modifications of your own for GUILE, it is your choice
+;;;; whether to permit this exception to apply to your modifications.
+;;;; If you do not wish that, delete this exception notice.
 ;;;; 
 \f
-(define-module (ice-9 string-fun))
+(define-module (ice-9 string-fun)
+  :export (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 string-prefix=?
+          sans-surrounding-whitespace sans-trailing-whitespace
+          sans-leading-whitespace sans-final-newline has-trailing-newline?))
 
 ;;;;
 ;;;
 ;;; complicated with these functions, consider using regular expressions.
 ;;;
 
-(define-public (split-after-char char str ret)
+(define (split-after-char char str ret)
   (let ((end (cond
              ((string-index str char) => 1+)
              (else (string-length str)))))
     (ret (substring str 0 end)
         (substring str end))))
 
-(define-public (split-before-char char str ret)
+(define (split-before-char char str ret)
   (let ((end (or (string-index str char)
                 (string-length str))))
     (ret (substring str 0 end)
         (substring str end))))
 
-(define-public (split-discarding-char char str ret)
+(define (split-discarding-char char str ret)
   (let ((end (string-index str char)))
     (if (not end)
        (ret str "")
        (ret (substring str 0 end)
             (substring str (1+ end))))))
 
-(define-public (split-after-char-last char str ret)
+(define (split-after-char-last char str ret)
   (let ((end (cond
              ((string-rindex str char) => 1+)
              (else 0))))
     (ret (substring str 0 end)
         (substring str end))))
 
-(define-public (split-before-char-last char str ret)
+(define (split-before-char-last char str ret)
   (let ((end (or (string-rindex str char) 0)))
     (ret (substring str 0 end)
         (substring str end))))
 
-(define-public (split-discarding-char-last char str ret)
+(define (split-discarding-char-last char str ret)
   (let ((end (string-rindex str char)))
     (if (not end)
        (ret str "")
        (ret (substring str 0 end)
             (substring str (1+ end))))))
 
-(define-public (split-before-predicate pred str ret)
+(define (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 (substring str 0 n)
                                             (substring str n))))))
-(define-public (split-after-predicate pred str ret)
+(define (split-after-predicate pred str ret)
   (let loop ((n 0))
     (cond
      ((= n (string-length str))                (ret str ""))
      (else                             (ret (substring str 0 (1+ n))
                                             (substring str (1+ n)))))))
 
-(define-public (split-discarding-predicate pred str ret)
+(define (split-discarding-predicate pred str ret)
   (let loop ((n 0))
     (cond
      ((= n (string-length str))                (ret str ""))
      (else                             (ret (substring str 0 n)
                                             (substring str (1+ n)))))))
 
-(define-public (separate-fields-discarding-char ch str ret)
+(define (separate-fields-discarding-char ch str ret)
   (let loop ((fields '())
             (str str))
     (cond
                           (substring str 0 w))))
      (else (apply ret str fields)))))
 
-(define-public (separate-fields-after-char ch str ret)
+(define (separate-fields-after-char ch str ret)
   (reverse
    (let loop ((fields '())
              (str str))
                            (substring str (+ 1 w)))))
       (else (apply ret str fields))))))
 
-(define-public (separate-fields-before-char ch str ret)
+(define (separate-fields-before-char ch str ret)
   (let loop ((fields '())
             (str str))
     (cond
 ;;; (define-public string-prefix=? (string-prefix-predicate string=?))
 ;;;
 
-(define-public ((string-prefix-predicate pred?) prefix str)
+(define ((string-prefix-predicate pred?) prefix str)
   (and (<= (string-length prefix) (string-length str))
        (pred? prefix (substring str 0 (string-length prefix)))))
 
-(define-public string-prefix=? (string-prefix-predicate string=?))
+(define string-prefix=? (string-prefix-predicate string=?))
 
 \f
 ;;; {String Fun: Strippers}
 ;;;                    | final-newline
 ;;;
 
-(define-public (sans-surrounding-whitespace s)
+(define (sans-surrounding-whitespace s)
   (let ((st 0)
        (end (string-length s)))
     (while (and (< st (string-length s))
        ""
        (substring s st end))))
 
-(define-public (sans-trailing-whitespace s)
+(define (sans-trailing-whitespace s)
   (let ((st 0)
        (end (string-length s)))
     (while (and (< 0 end)
        ""
        (substring s st end))))
 
-(define-public (sans-leading-whitespace s)
+(define (sans-leading-whitespace s)
   (let ((st 0)
        (end (string-length s)))
     (while (and (< st (string-length s))
        ""
        (substring s st end))))
 
-(define-public (sans-final-newline str)
+(define (sans-final-newline str)
   (cond
    ((= 0 (string-length str))
     str)
 ;;; {String Fun: has-trailing-newline?}
 ;;;
 
-(define-public (has-trailing-newline? str)
+(define (has-trailing-newline? str)
   (and (< 0 (string-length str))
        (char=? #\nl (string-ref str (1- (string-length str))))))