From: Ken Harris Date: Sun, 2 Jun 2013 17:13:01 +0000 (-0700) Subject: Character case predicates. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=858f7b088dcc3ba8c56927c8b201f704b3babf2c;p=jscl.git Character case predicates. --- diff --git a/src/char.lisp b/src/char.lisp index 6fe28b6..2a36d91 100644 --- a/src/char.lisp +++ b/src/char.lisp @@ -282,6 +282,15 @@ character exists." (or (< 31 n 127) (= n 10))))) +(defun upper-case-p (character) + (char/= character (char-downcase character))) + +(defun lower-case-p (character) + (char/= character (char-upcase character))) + +(defun both-case-p (character) + (or (upper-case-p character) (lower-case-p character))) + (defun char-int (character) ;; no implementation-defined character attributes (char-code character)) diff --git a/tests/characters.lisp b/tests/characters.lisp index dc0cf68..aa8388e 100644 --- a/tests/characters.lisp +++ b/tests/characters.lisp @@ -37,8 +37,6 @@ ;; (stable-sort (list #\b #\A #\B #\a #\c #\C) #'char-lessp) => (#\A #\a #\b #\B #\c #\C) ;; (stable-sort (list #\b #\A #\B #\a #\c #\C) #'char<) => implementation-dependent -;; TODO: char/=, char<, etc. - ;; CHARACTER (test (equal #\a (character #\a))) (test (equal #\a (character "a"))) @@ -114,7 +112,14 @@ (test (char= (code-char 223) (char-downcase (code-char 223)))) ;; already lower case (test (char= (code-char 127744) (char-downcase (code-char 127744)))) ;; no lower case -;; TODO: UPPER-CASE-P, LOWER-CASE-P, BOTH-CASE-P +;; UPPER-CASE-P, LOWER-CASE-P, BOTH-CASE-P +(test (upper-case-p #\A)) +(test (not (upper-case-p #\a))) +(test (both-case-p #\a)) +(test (not (both-case-p #\5))) +(test (not (lower-case-p #\5))) +(test (not (upper-case-p #\5))) +(test (not (upper-case-p (code-char 127744)))) ;; CODE-CHAR, CHAR-CODE (test (char= #\A (code-char 65)))