use comrak::{
Arena, Options,
arena_tree::NodeEdge,
nodes::{Node, NodeValue},
parse_document,
};
fn extract_text_traverse(root: Node<'_>) -> String {
let mut output_text = String::new();
for edge in root.traverse() {
if let NodeEdge::Start(node) = edge {
if let NodeValue::Text(ref text) = node.data().value {
output_text.push_str(text);
}
}
}
output_text
}
fn main() {
let markdown_input = "Hello, *worl[d](https://example.com/)*";
println!("INPUT: {}", markdown_input);
let arena = Arena::new();
let options = Options::default();
let root = parse_document(&arena, markdown_input, &options);
println!("OUTPUT: {}", extract_text_traverse(root).as_str())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn extract_text_traverse_test() {
let markdown_input = "Hello, *worl[d](https://example.com/)*";
let arena = Arena::new();
let options = Options::default();
let root = parse_document(&arena, markdown_input, &options);
assert_eq!("Hello, world", extract_text_traverse(root));
}
}