Remove results from movement function return values, and move editor test utilities to test file

This commit is contained in:
Keith Simmons 2022-03-22 10:55:03 -07:00
parent ec7bada586
commit df751867a1
4 changed files with 68 additions and 66 deletions

View file

@ -1,3 +1,5 @@
use collections::HashMap;
#[cfg(test)]
#[ctor::ctor]
fn init_logger() {
@ -5,3 +7,27 @@ fn init_logger() {
env_logger::init();
}
}
pub fn marked_text_by(
marked_text: &str,
markers: Vec<char>,
) -> (String, HashMap<char, Vec<usize>>) {
let mut extracted_markers: HashMap<char, Vec<usize>> = Default::default();
let mut unmarked_text = String::new();
for char in marked_text.chars() {
if markers.contains(&char) {
let char_offsets = extracted_markers.entry(char).or_insert(Vec::new());
char_offsets.push(unmarked_text.len());
} else {
unmarked_text.push(char);
}
}
(unmarked_text, extracted_markers)
}
pub fn marked_text(marked_text: &str) -> (String, Vec<usize>) {
let (unmarked_text, mut markers) = marked_text_by(marked_text, vec!['|']);
(unmarked_text, markers.remove(&'|').unwrap_or_else(Vec::new))
}