From 76f483ecff5b4c74cc6b35f3b61659fcac79355a Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Tue, 1 Dec 1992 14:52:03 +0000 Subject: [PATCH] Change the definition of substring-lower-case? and substring-upper-case? so that strings with no upper (lower) case characters match. The previous definition required at least one lower (upper) case character. Thus the empty string (or a string with only non-alphabetic characters) is both lower and upper case, while it was previously neither. --- v7/src/runtime/string.scm | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/v7/src/runtime/string.scm b/v7/src/runtime/string.scm index aeb576a65..6bfefd28c 100644 --- a/v7/src/runtime/string.scm +++ b/v7/src/runtime/string.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/string.scm,v 14.5 1992/08/28 16:05:58 jinx Exp $ +$Id: string.scm,v 14.6 1992/12/01 14:52:03 gjr Exp $ Copyright (c) 1988-1992 Massachusetts Institute of Technology @@ -237,15 +237,15 @@ MIT in each case. |# (define (substring-upper-case? string start end) (let find-upper ((start start)) - (and (fix:< start end) - (let ((char (string-ref string start))) - (if (char-upper-case? char) - (let search-rest ((start (fix:+ start 1))) - (or (fix:= start end) - (and (not (char-lower-case? (string-ref string start))) - (search-rest (fix:+ start 1))))) - (and (not (char-lower-case? char)) - (find-upper (fix:+ start 1)))))))) + (or (not (fix:< start end)) + (let ((char (string-ref string start))) + (if (char-upper-case? char) + (let search-rest ((start (fix:+ start 1))) + (or (fix:= start end) + (and (not (char-lower-case? (string-ref string start))) + (search-rest (fix:+ start 1))))) + (and (not (char-lower-case? char)) + (find-upper (fix:+ start 1)))))))) (define (string-upcase string) (let ((string (string-copy string))) @@ -260,15 +260,15 @@ MIT in each case. |# (define (substring-lower-case? string start end) (let find-lower ((start start)) - (and (fix:< start end) - (let ((char (string-ref string start))) - (if (char-lower-case? char) - (let search-rest ((start (fix:+ start 1))) - (or (fix:= start end) - (and (not (char-upper-case? (string-ref string start))) - (search-rest (fix:+ start 1))))) - (and (not (char-upper-case? char)) - (find-lower (fix:+ start 1)))))))) + (or (not (fix:< start end)) + (let ((char (string-ref string start))) + (if (char-lower-case? char) + (let search-rest ((start (fix:+ start 1))) + (or (fix:= start end) + (and (not (char-upper-case? (string-ref string start))) + (search-rest (fix:+ start 1))))) + (and (not (char-upper-case? char)) + (find-lower (fix:+ start 1)))))))) (define (string-downcase string) (let ((string (string-copy string))) -- 2.25.1