From e86ed760487a0348f84928e78bd255dbcf9af535 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Wed, 20 May 2020 12:14:16 +0200 Subject: [PATCH] add MatchPattern::Literal Signed-off-by: Wolfgang Bumiller --- src/match_list.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/match_list.rs b/src/match_list.rs index 504f85d..7ca5c0d 100644 --- a/src/match_list.rs +++ b/src/match_list.rs @@ -48,6 +48,9 @@ impl Default for MatchFlag { pub enum MatchPattern { /// A glob pattern. Pattern(crate::Pattern), + + /// A literal match. + Literal(Vec), } impl From for MatchPattern { @@ -56,6 +59,12 @@ impl From for MatchPattern { } } +impl MatchPattern { + pub fn literal(literal: impl Into>) -> Self { + MatchPattern::Literal(literal.into()) + } +} + /// A pattern can be used as an include or an exclude pattern. In a list of `MatchEntry`s, later /// patterns take precedence over earlier patterns and the order of includes vs excludes makes a /// difference. @@ -234,6 +243,7 @@ impl MatchEntry { fn matches_path_exact_do(&self, path: &[u8]) -> bool { match &self.pattern { MatchPattern::Pattern(pattern) => pattern.matches(path), + MatchPattern::Literal(literal) => path == &literal[..], } }