Ticket #1853: utf8.scm.diff

File utf8.scm.diff, 2.3 KB (added by zaifir, 3 weeks ago)

Changes to utf8.scm (add character type predicates)

  • utf8.scm

    old new  
    215115  ;; R5RS
    216116  string-length string-ref string-set! make-string string substring
    217117  string->list list->string string-fill! write-char read-char display
     118  char-alphabetic? char-whitespace? char-upper-case? char-lower-case?
    218119  ;; library
    219120  reverse-list->string print print*
    220121  ;; extras
     
    237138
    238139(import (rename (except scheme
    239140                        string string->list list->string string-fill!
    240                         string-ref string-set! write-char read-char)
     141                        string-ref string-set! write-char read-char
     142                        char-alphabetic? char-whitespace?
     143                        char-upper-case? char-lower-case?
     144                        char-numeric?)
    241145                (make-string make-byte-string)
    242146                (substring byte-substring)
    243147                (string-length byte-string-length)
     
    266170                (string-split-fields byte-string-split-fields))
    267171        (rename utf8-lolevel
    268172                (utf8-string? valid-string?))
     173        (only utf8-srfi-14 char-set-contains?)
     174        (unicode-char-sets alphabetic)
     175        (unicode-char-sets white-space)
     176        (unicode-char-sets uppercase)
     177        (unicode-char-sets lowercase)
     178        (unicode-char-sets numeric)
    269179        (chicken port))
    270180
    271181
     
    344254    (string-set-at-byte s size byte c-len val)))
    345255
    346256;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     257;; Character predicates
     258
     259(define-syntax define-char-predicate
     260  (syntax-rules ()
     261    ((define-char-predicate proc-name char-set)
     262     (define (proc-name char)
     263       (unless (char? char)
     264         (error 'proc-name "invalid argument" char? char))
     265       (char-set-contains? char-set char)))))
     266
     267(define-char-predicate char-alphabetic? char-set:alphabetic)
     268(define-char-predicate char-whitespace? char-set:white-space)
     269(define-char-predicate char-upper-case? char-set:uppercase)
     270(define-char-predicate char-lower-case? char-set:lowercase)
     271(define-char-predicate char-numeric? char-set:numeric)
     272
     273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    347274;; Basic I/O
    348275
    349276(define write-char write-utf8-char)