summaryrefslogtreecommitdiffstats
path: root/libimagutil
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2016-03-07 17:22:13 +0100
committerMatthias Beyer <mail@beyermatthias.de>2016-03-07 17:22:13 +0100
commit501f4f3111fc5c91d02f96b5e25e99e877339cd6 (patch)
treedc2ba4c712c9959665ef3cb27ea0526605102683 /libimagutil
parent20201d235805b4b998109af950020c82d3db306f (diff)
parenta429e872e1c43b9d8a330443d5e2fd605101ca9c (diff)
Merge pull request #203 from matthiasbeyer/libimagutil/ismatch-util
Add ismatch!() macro
Diffstat (limited to 'libimagutil')
-rw-r--r--libimagutil/src/ismatch.rs23
-rw-r--r--libimagutil/src/lib.rs1
2 files changed, 24 insertions, 0 deletions
diff --git a/libimagutil/src/ismatch.rs b/libimagutil/src/ismatch.rs
new file mode 100644
index 00000000..9739f139
--- /dev/null
+++ b/libimagutil/src/ismatch.rs
@@ -0,0 +1,23 @@
+#[macro_export]
+macro_rules! is_match {
+ ($expression: expr, $($pattern:tt)+) => {
+ is_match! {tt
+ match $expression {
+ $($pattern)+ => true,
+ _ => false
+ }
+ }
+ };
+ (tt $value:expr) => ($value);
+}
+
+#[test]
+fn test_matching() {
+ let foo = Some("-12");
+ assert!(is_match!(foo, Some(bar) if
+ is_match!(bar.as_bytes()[0], b'+' | b'-') &&
+ is_match!(bar.as_bytes()[1], b'0'...b'9')
+ ));
+ assert!(!is_match!(foo, None));
+}
+
diff --git a/libimagutil/src/lib.rs b/libimagutil/src/lib.rs
index 0b74fc2d..4140f429 100644
--- a/libimagutil/src/lib.rs
+++ b/libimagutil/src/lib.rs
@@ -2,6 +2,7 @@
#[macro_use] extern crate log;
extern crate regex;
+pub mod ismatch;
pub mod key_value_split;
pub mod trace;
pub mod variants;