tep_lib/common/
cook.rs

1/// Overview: Process (cook) the source (raw) content.
2use super::rule::Rule;
3use super::tree::Tree;
4use super::trim::trim;
5
6pub fn cook(raw: &str) -> String {
7    let raw_chars: Vec<char> = raw.chars().collect();
8    let raw_len = raw_chars.len();
9    let mut cooked = String::with_capacity(2 * raw.len());
10    let mut index = 0usize;
11
12    let search_tree = Tree::from(Rule::default_rules());
13
14    while index < raw_len {
15        match search_tree.query(&raw_chars, index, raw_len) {
16            Some((to, depth)) => {
17                cooked.push_str(to);
18                index += depth;
19            }
20            None => {
21                cooked.push(raw_chars[index]);
22                index += 1;
23            }
24        }
25    }
26
27    trim(&cooked)
28}