From 49af5a1ac02461c23c080f8f3cdf26868409610f Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Tue, 18 Nov 2008 15:10:24 -0600
Subject: [PATCH] add support for [\\w] and [\\W]

---
 basis/regexp/classes/classes.factor | 4 ++++
 basis/regexp/regexp-tests.factor    | 8 ++++++++
 2 files changed, 12 insertions(+)

diff --git a/basis/regexp/classes/classes.factor b/basis/regexp/classes/classes.factor
index a2d91b97fb..240b27a9cc 100644
--- a/basis/regexp/classes/classes.factor
+++ b/basis/regexp/classes/classes.factor
@@ -30,6 +30,10 @@ M: ascii-class class-member? ( obj class -- ? )
 M: digit-class class-member? ( obj class -- ? )
     drop digit? ;
 
+M: c-identifier-class class-member? ( obj class -- ? )
+    drop
+    { [ digit? ] [ Letter? ] [ CHAR: _ = ] } 1|| ;
+
 M: alpha-class class-member? ( obj class -- ? )
     drop alpha? ;
 
diff --git a/basis/regexp/regexp-tests.factor b/basis/regexp/regexp-tests.factor
index 2a6c0dc16f..3e7d83a12b 100644
--- a/basis/regexp/regexp-tests.factor
+++ b/basis/regexp/regexp-tests.factor
@@ -46,6 +46,14 @@ IN: regexp-tests
 [ t ] [ "a" ".+" <regexp> matches? ] unit-test
 [ t ] [ "ab" ".+" <regexp> matches? ] unit-test
 
+[ t ] [ " " "[\\s]" <regexp> matches? ] unit-test
+[ f ] [ "a" "[\\s]" <regexp> matches? ] unit-test
+[ f ] [ " " "[\\S]" <regexp> matches? ] unit-test
+[ t ] [ "a" "[\\S]" <regexp> matches? ] unit-test
+[ f ] [ " " "[\\w]" <regexp> matches? ] unit-test
+[ t ] [ "a" "[\\w]" <regexp> matches? ] unit-test
+[ t ] [ " " "[\\W]" <regexp> matches? ] unit-test
+[ f ] [ "a" "[\\W]" <regexp> matches? ] unit-test
 
 [ t ] [ "" "a|b*|c+|d?" <regexp> matches? ] unit-test
 [ t ] [ "a" "a|b*|c+|d?" <regexp> matches? ] unit-test