diff --git a/lib/chibi/regexp.scm b/lib/chibi/regexp.scm index fc2a16b2..3ea8b84d 100644 --- a/lib/chibi/regexp.scm +++ b/lib/chibi/regexp.scm @@ -494,12 +494,6 @@ (char-set-union %char-set:letter %char-set:digit (char-set #\_))) (define (char-word-constituent? ch) (char-set-contains? char-set:word-constituent ch)) -(define char-set:title-case - (char-set-union - (ucs-range->char-set #x1F88 #x1F90) - (ucs-range->char-set #x1F98 #x1FA0) - (ucs-range->char-set #x1FA8 #x1FB0) - (char-set #\x01C5 #\x01C8 #\x01CB #\x01F2 #\x1FBC #\x1FCC #\x1FFC))) (define get-char-set:cased (let ((char-set:cased #f)) (lambda () diff --git a/lib/chibi/regexp.sld b/lib/chibi/regexp.sld index 35e39c2f..148d6085 100644 --- a/lib/chibi/regexp.sld +++ b/lib/chibi/regexp.sld @@ -12,12 +12,24 @@ ;; Chibi's char-set library is more factored than SRFI-14. (cond-expand (chibi - (import (rename (chibi) (protect guard)) - (srfi 9) (chibi char-set) + (import (rename (chibi) + (protect guard) + (char-downcase %char-downcase) + (char-upcase %char-upcase)) + (only (scheme char) char-downcase char-upcase) + (srfi 9) + (chibi char-set) (chibi char-set full) - (prefix (chibi char-set ascii) %))) + (prefix (chibi char-set ascii) %)) + (begin + (define char-set:title-case + (char-set-union + (ucs-range->char-set #x1F88 #x1F90) + (ucs-range->char-set #x1F98 #x1FA0) + (ucs-range->char-set #x1FA8 #x1FB0) + (char-set #\x01C5 #\x01C8 #\x01CB #\x01F2 #\x1FBC #\x1FCC #\x1FFC))))) (else - (import (scheme base) (srfi 14)) + (import (scheme base) (scheme char) (srfi 14)) (begin (define %char-set:letter (char-set-intersection char-set:ascii char-set:letter)) diff --git a/tests/regexp-tests.scm b/tests/regexp-tests.scm index 3698b43c..0d065518 100644 --- a/tests/regexp-tests.scm +++ b/tests/regexp-tests.scm @@ -179,6 +179,7 @@ (test-re '("кириллица") '(* alpha) "кириллица") (test-re #f '(w/ascii (* alpha)) "кириллица") +(test-re '("кириллица") '(w/nocase "КИРИЛЛИЦА") "кириллица") (test-re '("12345") '(* digit) "12345") (test-re #f '(w/ascii (* digit)) "12345")