]> git.lizzy.rs Git - rust.git/commitdiff
regex: Convert statics to constants
authorAlex Crichton <alex@alexcrichton.com>
Mon, 6 Oct 2014 23:32:48 +0000 (16:32 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Thu, 9 Oct 2014 16:44:51 +0000 (09:44 -0700)
This require a bit of finesse to work around the changes with libunicode, but
nothing too major!

src/libregex/parse.rs
src/libregex/re.rs
src/libregex_macros/lib.rs

index bf576432631391e7a91714146994d1187032188e..1d1d1a0e9c5cab3668f09052cdff7d8187d392aa 100644 (file)
@@ -162,12 +162,12 @@ fn unwrap(self) -> Result<Ast, Error> {
 /// expression.
 pub type Flags = u8;
 
-pub static FLAG_EMPTY:      u8 = 0;
-pub static FLAG_NOCASE:     u8 = 1 << 0; // i
-pub static FLAG_MULTI:      u8 = 1 << 1; // m
-pub static FLAG_DOTNL:      u8 = 1 << 2; // s
-pub static FLAG_SWAP_GREED: u8 = 1 << 3; // U
-pub static FLAG_NEGATED:    u8 = 1 << 4; // char class or not word boundary
+pub const FLAG_EMPTY:      u8 = 0;
+pub const FLAG_NOCASE:     u8 = 1 << 0; // i
+pub const FLAG_MULTI:      u8 = 1 << 1; // m
+pub const FLAG_DOTNL:      u8 = 1 << 2; // s
+pub const FLAG_SWAP_GREED: u8 = 1 << 3; // U
+pub const FLAG_NEGATED:    u8 = 1 << 4; // char class or not word boundary
 
 struct Parser<'a> {
     // The input, parsed only as a sequence of UTF8 code points.
@@ -1025,7 +1025,7 @@ fn find_class(classes: NamedClasses, name: &str) -> Option<Vec<(char, char)>> {
 }
 
 type Class = &'static [(char, char)];
-type NamedClasses = &'static [(&'static str, Class)];
+type NamedClasses = &'static [(&'static str, &'static Class)];
 
 static ASCII_CLASSES: NamedClasses = &[
     // Classes must be in alphabetical order so that bsearch works.
@@ -1044,19 +1044,34 @@ fn find_class(classes: NamedClasses, name: &str) -> Option<Vec<(char, char)>> {
     // [:word:]       word characters (== [0-9A-Za-z_])
     // [:xdigit:]     hex digit (== [0-9A-Fa-f])
     // Taken from: http://golang.org/pkg/regex/syntax/
-    ("alnum", &[('0', '9'), ('A', 'Z'), ('a', 'z')]),
-    ("alpha", &[('A', 'Z'), ('a', 'z')]),
-    ("ascii", &[('\x00', '\x7F')]),
-    ("blank", &[(' ', ' '), ('\t', '\t')]),
-    ("cntrl", &[('\x00', '\x1F'), ('\x7F', '\x7F')]),
-    ("digit", &[('0', '9')]),
-    ("graph", &[('!', '~')]),
-    ("lower", &[('a', 'z')]),
-    ("print", &[(' ', '~')]),
-    ("punct", &[('!', '/'), (':', '@'), ('[', '`'), ('{', '~')]),
-    ("space", &[('\t', '\t'), ('\n', '\n'), ('\x0B', '\x0B'), ('\x0C', '\x0C'),
-                ('\r', '\r'), (' ', ' ')]),
-    ("upper", &[('A', 'Z')]),
-    ("word", &[('0', '9'), ('A', 'Z'), ('a', 'z'), ('_', '_')]),
-    ("xdigit", &[('0', '9'), ('A', 'F'), ('a', 'f')]),
+    ("alnum", &ALNUM),
+    ("alpha", &ALPHA),
+    ("ascii", &ASCII),
+    ("blank", &BLANK),
+    ("cntrl", &CNTRL),
+    ("digit", &DIGIT),
+    ("graph", &GRAPH),
+    ("lower", &LOWER),
+    ("print", &PRINT),
+    ("punct", &PUNCT),
+    ("space", &SPACE),
+    ("upper", &UPPER),
+    ("word", &WORD),
+    ("xdigit", &XDIGIT),
 ];
+
+static ALNUM: Class = &[('0', '9'), ('A', 'Z'), ('a', 'z')];
+static ALPHA: Class = &[('A', 'Z'), ('a', 'z')];
+static ASCII: Class = &[('\x00', '\x7F')];
+static BLANK: Class = &[(' ', ' '), ('\t', '\t')];
+static CNTRL: Class = &[('\x00', '\x1F'), ('\x7F', '\x7F')];
+static DIGIT: Class = &[('0', '9')];
+static GRAPH: Class = &[('!', '~')];
+static LOWER: Class = &[('a', 'z')];
+static PRINT: Class = &[(' ', '~')];
+static PUNCT: Class = &[('!', '/'), (':', '@'), ('[', '`'), ('{', '~')];
+static SPACE: Class = &[('\t', '\t'), ('\n', '\n'), ('\x0B', '\x0B'),
+                        ('\x0C', '\x0C'), ('\r', '\r'), (' ', ' ')];
+static UPPER: Class = &[('A', 'Z')];
+static WORD: Class = &[('0', '9'), ('A', 'Z'), ('a', 'z'), ('_', '_')];
+static XDIGIT: Class = &[('0', '9'), ('A', 'F'), ('a', 'f')];
index 0b5aeb215e66c390be753b89c1cd3dde603e520e..eebe9b85e3b9daaf070898df0ef56cf5ec990b41 100644 (file)
@@ -128,7 +128,7 @@ pub struct ExNative {
     #[doc(hidden)]
     pub original: &'static str,
     #[doc(hidden)]
-    pub names: &'static [Option<&'static str>],
+    pub names: &'static &'static [Option<&'static str>],
     #[doc(hidden)]
     pub prog: fn(MatchKind, &str, uint, uint) -> Vec<Option<uint>>
 }
index 67018769fb371b530ecc4ecdd7aa81aacb536cac..c48b35a49808c047f0abdf8d91686f317b9e301b 100644 (file)
@@ -324,7 +324,7 @@ fn groups<'r>(&'r mut self, i: uint) -> &'r mut Captures {
 
 ::regex::native::Native(::regex::native::ExNative {
     original: $regex,
-    names: CAP_NAMES,
+    names: &CAP_NAMES,
     prog: exec,
 })
         })