mes: Add char-downcase, char-upcase.
[mes.git] / mes / module / srfi / srfi-14.mes
index d903f73cba1bb643d15e635ed2bebc53d2269139..2e925ec58a7563a0d51efe1807f758e6f055892c 100644 (file)
        (equal? a b)))
 
 (define char-set:whitespace (char-set #\tab #\page #\return #\vtab #\newline #\space))
+(define char-set:digit (apply char-set
+                                   (map integer->char
+                                        (map (lambda (i)
+                                               (+ i (char->integer #\0))) (iota 10)))))
+
+(define char-set:lower-case (apply char-set
+                                   (map integer->char
+                                        (map (lambda (i)
+                                               (+ i (char->integer #\a))) (iota 26)))))
+
+(define char-set:upper-case (apply char-set
+                                   (map integer->char
+                                        (map (lambda (i)
+                                               (+ i (char->integer #\A))) (iota 26)))))
 
 (define (list->char-set lst)
   (apply char-set lst))
 
 (define (char-set-copy cs)
   (map identity cs))
+
+(define (char-upcase c)
+  (if (char-set-contains? char-set:lower-case c) (integer->char (- (char->integer c)
+                                                                   (- (char->integer #\a)
+                                                                      (char->integer #\A))))
+      c))
+
+(define (char-downcase c)
+  (if (char-set-contains? char-set:upper-case c) (integer->char (+ (char->integer c)
+                                                                   (- (char->integer #\a)
+                                                                      (char->integer #\A))))
+      c))