mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-05-19 01:30:21 -07:00
This leaves the grep-regex crate in tatters. Pretty much the entire thing needs to be re-worked. The upshot is that it should result in some big simplifications. I hope. The idea here is to drop down and actually use regex-automata 0.3 instead of the regex crate itself.
31 lines
826 B
Rust
31 lines
826 B
Rust
/// Converts an arbitrary sequence of bytes to a literal suitable for building
|
|
/// a regular expression.
|
|
#[allow(dead_code)]
|
|
pub fn bytes_to_regex(bs: &[u8]) -> String {
|
|
use regex_syntax::is_meta_character;
|
|
use std::fmt::Write;
|
|
|
|
let mut s = String::with_capacity(bs.len());
|
|
for &b in bs {
|
|
if b <= 0x7F && !is_meta_character(b as char) {
|
|
write!(s, r"{}", b as char).unwrap();
|
|
} else {
|
|
write!(s, r"\x{:02x}", b).unwrap();
|
|
}
|
|
}
|
|
s
|
|
}
|
|
|
|
/// Converts arbitrary bytes to a nice string.
|
|
pub fn show_bytes(bs: &[u8]) -> String {
|
|
use std::ascii::escape_default;
|
|
use std::str;
|
|
|
|
let mut nice = String::new();
|
|
for &b in bs {
|
|
let part: Vec<u8> = escape_default(b).collect();
|
|
nice.push_str(str::from_utf8(&part).unwrap());
|
|
}
|
|
nice
|
|
}
|