summaryrefslogtreecommitdiff
path: root/melib/src/parsec.rs
diff options
context:
space:
mode:
Diffstat (limited to 'melib/src/parsec.rs')
-rw-r--r--melib/src/parsec.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/melib/src/parsec.rs b/melib/src/parsec.rs
index a502ca74..8eebf608 100644
--- a/melib/src/parsec.rs
+++ b/melib/src/parsec.rs
@@ -343,6 +343,23 @@ pub fn is_a<'a>(slice: &'static [u8]) -> impl Parser<'a, &'a str> {
}
}
+pub fn is_not<'a>(slice: &'static [u8]) -> impl Parser<'a, &'a str> {
+ move |input: &'a str| {
+ let mut i = 0;
+ for byte in input.as_bytes().iter() {
+ if slice.contains(byte) {
+ break;
+ }
+ i += 1;
+ }
+ if i == 0 {
+ return Err("");
+ }
+ let (b, a) = input.split_at(i);
+ Ok((a, b))
+ }
+}
+
/// Try alternative parsers in order until one succeeds.
///
/// ```rust