Changed function signature to keep buffer handling out of lib
This commit is contained in:
parent
23325caf43
commit
c2a8bfe0ab
@ -1,5 +1,6 @@
|
||||
use regex::Regex;
|
||||
use rustc_demangle::demangle;
|
||||
use std::str::Lines;
|
||||
|
||||
const REPLACE_COLONS: &str = "::";
|
||||
|
||||
@ -7,8 +8,7 @@ pub fn create_disambiguator_re() -> Regex {
|
||||
Regex::new(r"\[[a-f0-9]{5,16}\]::").unwrap()
|
||||
}
|
||||
|
||||
pub fn demangle_lines(buffer: &str, strip_crate_disambiguators: Option<Regex>) -> Vec<String> {
|
||||
let lines = buffer.lines();
|
||||
pub fn demangle_lines(lines: Lines<'_>, strip_crate_disambiguators: Option<Regex>) -> Vec<String> {
|
||||
let mut demangled_lines = Vec::new();
|
||||
for mangled in lines {
|
||||
let mut demangled = demangle(mangled).to_string();
|
||||
@ -17,6 +17,5 @@ pub fn demangle_lines(buffer: &str, strip_crate_disambiguators: Option<Regex>) -
|
||||
}
|
||||
demangled_lines.push(demangled);
|
||||
}
|
||||
demangled_lines.push("".to_string());
|
||||
demangled_lines
|
||||
}
|
||||
|
@ -90,7 +90,8 @@ fn main() -> io::Result<()> {
|
||||
|
||||
let mut buffer = String::new();
|
||||
io::stdin().read_to_string(&mut buffer)?;
|
||||
let demangled_lines = demangle_lines(&buffer, strip_crate_disambiguators);
|
||||
let mut demangled_lines = demangle_lines(buffer.lines(), strip_crate_disambiguators);
|
||||
demangled_lines.push("".to_string()); // ensure a trailing newline
|
||||
io::stdout().write_all(demangled_lines.join("\n").as_bytes())?;
|
||||
Ok(())
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
use rust_demangler::*;
|
||||
|
||||
const MANGLED_LINES: &str = r"
|
||||
const MANGLED_INPUT: &str = r"
|
||||
_RNvC6_123foo3bar
|
||||
_RNqCs4fqI2P2rA04_11utf8_identsu30____7hkackfecea1cbdathfdh9hlq6y
|
||||
_RNCNCNgCs6DXkGYLi8lr_2cc5spawn00B5_
|
||||
@ -24,7 +24,7 @@ _RNvNtNtNtNtCs92dm3009vxr_4rand4rngs7adapter9reseeding4fork23FORK_HANDLER_REGIST
|
||||
|
||||
#[test]
|
||||
fn test_demangle_lines() {
|
||||
let demangled_lines = demangle_lines(MANGLED_LINES, None);
|
||||
let demangled_lines = demangle_lines(MANGLED_INPUT.lines(), None);
|
||||
let mut iter = demangled_lines.iter();
|
||||
assert_eq!("", iter.next().unwrap());
|
||||
assert_eq!("123foo[0]::bar", iter.next().unwrap());
|
||||
@ -55,13 +55,12 @@ fn test_demangle_lines() {
|
||||
"rand[693ea8e72247470f]::rngs::adapter::reseeding::fork::FORK_HANDLER_REGISTERED.0.0",
|
||||
iter.next().unwrap()
|
||||
);
|
||||
assert_eq!("", iter.next().unwrap());
|
||||
assert!(iter.next().is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_demangle_lines_no_crate_disambiguators() {
|
||||
let demangled_lines = demangle_lines(MANGLED_LINES, Some(create_disambiguator_re()));
|
||||
let demangled_lines = demangle_lines(MANGLED_INPUT.lines(), Some(create_disambiguator_re()));
|
||||
let mut iter = demangled_lines.iter();
|
||||
assert_eq!("", iter.next().unwrap());
|
||||
assert_eq!("123foo[0]::bar", iter.next().unwrap());
|
||||
@ -92,6 +91,5 @@ fn test_demangle_lines_no_crate_disambiguators() {
|
||||
"rand::rngs::adapter::reseeding::fork::FORK_HANDLER_REGISTERED.0.0",
|
||||
iter.next().unwrap()
|
||||
);
|
||||
assert_eq!("", iter.next().unwrap());
|
||||
assert!(iter.next().is_none());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user