Changed function signature to keep buffer handling out of lib

This commit is contained in:
Rich Kadel 2021-03-29 08:28:52 -07:00
parent 23325caf43
commit c2a8bfe0ab
3 changed files with 7 additions and 9 deletions

View File

@ -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
}

View File

@ -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(())
}

View File

@ -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());
}