Remove results from movement function return values, and move editor test utilities to test file
This commit is contained in:
parent
ec7bada586
commit
df751867a1
4 changed files with 68 additions and 66 deletions
|
@ -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))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue