Raymond Toy pushed to branch issue-326-char-casing-cleanup at cmucl / cmucl

Commits:

1 changed file:

Changes:

  • src/code/unicode.lisp
    ... ... @@ -401,15 +401,11 @@
    401 401
     (defun char-titlecase (char)
    
    402 402
       "Returns CHAR converted to title-case if that is possible."
    
    403 403
       (declare (character char))
    
    404
    -  #-(and unicode (not unicode-bootstrap))
    
    405
    -  (if (lower-case-p char)
    
    406
    -      (code-char (- (char-code char) 32))
    
    407
    -      char)
    
    408
    -  #+(and unicode (not unicode-bootstrap))
    
    409 404
       (let ((m (char-code char)))
    
    410
    -    (cond ((> m +ascii-limit+) (code-char (unicode-title m)))
    
    411
    -	  ((< (char-code #\`) m (char-code #\{))
    
    412
    -           (code-char (- m 32)))
    
    405
    +    (cond ((<= (char-code #\a) m (char-code #\z))
    
    406
    +           (code-char (logxor m #x20)))
    
    407
    +          #+(and unicode (not unicode-bootstrap))
    
    408
    +	  ((> m +ascii-limit+) (code-char (unicode-title m)))
    
    413 409
     	  (t char))))
    
    414 410
     
    
    415 411
     (defun title-case-p (char)
    
    ... ... @@ -417,7 +413,7 @@
    417 413
       argument is a title-case character, NIL otherwise."
    
    418 414
       (declare (character char))
    
    419 415
       (let ((m (char-code char)))
    
    420
    -    (or (< 64 m 91)
    
    416
    +    (or (<= (code-char #\A) m (code-char #\Z))
    
    421 417
     	#+(and unicode (not unicode-bootstrap))
    
    422 418
     	(and (> m +ascii-limit+)
    
    423 419
     	     (= (unicode-category m) +unicode-category-title+)))))