~ chicken-core (chicken-5) d4f4019f8779b0cfa30513b3c0026831a66d688b
commit d4f4019f8779b0cfa30513b3c0026831a66d688b Author: Peter Bex <Peter.Bex@xs4all.nl> AuthorDate: Fri Sep 24 22:46:35 2010 +0200 Commit: Peter Bex <Peter.Bex@xs4all.nl> CommitDate: Fri Sep 24 22:46:35 2010 +0200 Apply upstream changeset f161a053a24e (Make case insensitivity work for enumerated charsets, and add case-insensitivity testcases for most charset types) diff --git a/irregex-core.scm b/irregex-core.scm index f09ab23c..ca4d327d 100644 --- a/irregex-core.scm +++ b/irregex-core.scm @@ -2458,7 +2458,10 @@ ((pair? (car ls)) (cond ((string? (caar ls)) ; Enumerated character set - (extend-state! (lp (cdr ls) n flags next) (string->cset (caar ls)))) + (let ((set (if (flag-set? flags ~case-insensitive?) + (cset-case-insensitive (string->cset (caar ls))) + (string->cset (caar ls))))) + (extend-state! (lp (cdr ls) n flags next) set))) (else (case (caar ls) ((seq :) diff --git a/tests/test-irregex.scm b/tests/test-irregex.scm index 8697a24f..d3c41b99 100644 --- a/tests/test-irregex.scm +++ b/tests/test-irregex.scm @@ -246,6 +246,30 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(test-group "Case sensitivity" + (test-assert + (not (irregex-match '(seq "abc") "ABC"))) + (test-assert + (irregex-match (irregex '(seq "abc") 'case-insensitive) "ABC")) + (test-assert + (irregex-match '(w/nocase "abc") "ABC")) + (test-assert + (not (irregex-match '(w/nocase (w/case "abc")) "ABC"))) + (test-assert + (irregex-match '(w/nocase (* ("abc"))) "ABC")) + (test-assert + (not (irregex-match '(w/nocase (w/case (* ("abc")))) "ABC"))) + (test-assert + (irregex-match '(w/nocase (* (/ #\a #\c))) "ABC")) + (test-assert + (not (irregex-match '(w/nocase (w/case (/ #\a #\c))) "ABC"))) + (test-assert + (not (irregex-match '(w/nocase (* (~ (/ #\a #\c)))) "abc"))) + (test-assert + (not (irregex-match '(w/nocase (* (~ (/ #\a #\c)))) "ABC")))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (test-group "API" (test-assert (irregex? (irregex "a.*b"))) (test-assert (irregex? (irregex '(: "a" (* any) "b"))))Trap