From afa8bfb10c21755a814b7c090f6fac1b87a52890 Mon Sep 17 00:00:00 2001 From: Andrew Gallant Date: Thu, 27 Feb 2025 12:37:06 -0500 Subject: [PATCH] globset: escape `{` and `}` in `escape` This appears to be an oversight from when `escape` was implemented in #2061. --- crates/globset/src/lib.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/crates/globset/src/lib.rs b/crates/globset/src/lib.rs index b1fc696af..e804e12a5 100644 --- a/crates/globset/src/lib.rs +++ b/crates/globset/src/lib.rs @@ -928,13 +928,26 @@ impl RequiredExtensionStrategyBuilder { /// /// The escaping works by surrounding meta-characters with brackets. For /// example, `*` becomes `[*]`. +/// +/// # Example +/// +/// ``` +/// use globset::escape; +/// +/// assert_eq!(escape("foo*bar"), "foo[*]bar"); +/// assert_eq!(escape("foo?bar"), "foo[?]bar"); +/// assert_eq!(escape("foo[bar"), "foo[[]bar"); +/// assert_eq!(escape("foo]bar"), "foo[]]bar"); +/// assert_eq!(escape("foo{bar"), "foo[{]bar"); +/// assert_eq!(escape("foo}bar"), "foo[}]bar"); +/// ``` pub fn escape(s: &str) -> String { let mut escaped = String::with_capacity(s.len()); for c in s.chars() { match c { // note that ! does not need escaping because it is only special // inside brackets - '?' | '*' | '[' | ']' => { + '?' | '*' | '[' | ']' | '{' | '}' => { escaped.push('['); escaped.push(c); escaped.push(']');