#![deny(missing_docs)]
use crate::Node;
pub fn load_data(data: &str) -> Vec<Vec<&str>> {
let data = data
.trim()
.split('\n')
.map(|line| {
line.split_whitespace()
.filter(|token| !token.is_empty())
.take(2)
.collect()
})
.collect();
data
}
pub fn build_map(data: Vec<Vec<&str>>) -> Node {
let root = Node::default();
data.iter().filter(|e| e.len() == 2).for_each(|e| {
root.insert(e[0].chars().collect(), e[1].to_owned());
});
root
}
#[cfg(test)]
mod tests {
#[test]
fn test_load_data() {
use crate::utils;
let data = include_str!("../data/sample.txt");
utils::load_data(data)
.iter()
.for_each(|pair| assert_eq!(pair.len(), 2));
}
#[test]
fn test_build_map() {
use crate::utils;
let data = vec![vec!["af11", "ɑ̀ɑ̀"], vec!["?.", "ʔ"], vec![], vec!["c/"]];
utils::build_map(data);
let data = include_str!("../data/sample.txt");
let data = utils::load_data(data);
utils::build_map(data);
}
}