mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-04-24 17:12:16 +02:00
parent
23adbd6795
commit
4993d29a16
@ -1222,12 +1222,20 @@ mod tests {
|
|||||||
Options { casei: Some(true), litsep: None, bsesc: None, ealtre: None };
|
Options { casei: Some(true), litsep: None, bsesc: None, ealtre: None };
|
||||||
const SLASHLIT: Options =
|
const SLASHLIT: Options =
|
||||||
Options { casei: None, litsep: Some(true), bsesc: None, ealtre: None };
|
Options { casei: None, litsep: Some(true), bsesc: None, ealtre: None };
|
||||||
const NOBSESC: Options =
|
const NOBSESC: Options = Options {
|
||||||
Options { casei: None, litsep: None, bsesc: Some(false), ealtre: None };
|
casei: None,
|
||||||
|
litsep: None,
|
||||||
|
bsesc: Some(false),
|
||||||
|
ealtre: None,
|
||||||
|
};
|
||||||
const BSESC: Options =
|
const BSESC: Options =
|
||||||
Options { casei: None, litsep: None, bsesc: Some(true), ealtre: None };
|
Options { casei: None, litsep: None, bsesc: Some(true), ealtre: None };
|
||||||
const EALTRE: Options =
|
const EALTRE: Options = Options {
|
||||||
Options { casei: None, litsep: None, bsesc: Some(true), ealtre: Some(true) };
|
casei: None,
|
||||||
|
litsep: None,
|
||||||
|
bsesc: Some(true),
|
||||||
|
ealtre: Some(true),
|
||||||
|
};
|
||||||
|
|
||||||
toregex!(re_casei, "a", "(?i)^a$", &CASEI);
|
toregex!(re_casei, "a", "(?i)^a$", &CASEI);
|
||||||
|
|
||||||
|
@ -880,6 +880,29 @@ impl RequiredExtensionStrategyBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Escape meta-characters within the given glob pattern.
|
||||||
|
///
|
||||||
|
/// The escaping works by surrounding meta-characters with brackets. For
|
||||||
|
/// example, `*` becomes `[*]`.
|
||||||
|
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(']');
|
||||||
|
}
|
||||||
|
c => {
|
||||||
|
escaped.push(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
escaped
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::{GlobSet, GlobSetBuilder};
|
use super::{GlobSet, GlobSetBuilder};
|
||||||
@ -919,4 +942,16 @@ mod tests {
|
|||||||
assert!(!set.is_match(""));
|
assert!(!set.is_match(""));
|
||||||
assert!(!set.is_match("a"));
|
assert!(!set.is_match("a"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn escape() {
|
||||||
|
use super::escape;
|
||||||
|
assert_eq!("foo", escape("foo"));
|
||||||
|
assert_eq!("foo[*]", escape("foo*"));
|
||||||
|
assert_eq!("[[][]]", escape("[]"));
|
||||||
|
assert_eq!("[*][?]", escape("*?"));
|
||||||
|
assert_eq!("src/[*][*]/[*].rs", escape("src/**/*.rs"));
|
||||||
|
assert_eq!("bar[[]ab[]]baz", escape("bar[ab]baz"));
|
||||||
|
assert_eq!("bar[[]!![]]!baz", escape("bar[!!]!baz"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user