mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-06-14 22:15:13 +02:00
30 lines
806 B
Rust
30 lines
806 B
Rust
![]() |
/// Converts an arbitrary sequence of bytes to a literal suitable for building
|
||
|
/// a regular expression.
|
||
|
pub fn bytes_to_regex(bs: &[u8]) -> String {
|
||
|
use std::fmt::Write;
|
||
|
use regex_syntax::is_meta_character;
|
||
|
|
||
|
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
|
||
|
}
|