29 lines
1 KiB
Rust
29 lines
1 KiB
Rust
extern crate pulldown_cmark;
|
|
|
|
use std::io::Write as _;
|
|
|
|
use pulldown_cmark::{html, Event, Options, Parser, Tag};
|
|
|
|
fn main() {
|
|
let markdown_input: &str = "This is Peter on .";
|
|
println!("Parsing the following markdown string:\n{}", markdown_input);
|
|
|
|
// Set up parser. We can treat is as any other iterator. We replace Peter by John
|
|
// and image by its alt text.
|
|
let parser = Parser::new_ext(markdown_input, Options::empty())
|
|
.map(|event| match event {
|
|
Event::Text(text) => Event::Text(text.replace("Peter", "John").into()),
|
|
_ => event,
|
|
})
|
|
.filter(|event| match event {
|
|
Event::Start(Tag::Image(..)) | Event::End(Tag::Image(..)) => false,
|
|
_ => true,
|
|
});
|
|
|
|
// Write to anything implementing the `Write` trait. This could also be a file
|
|
// or network socket.
|
|
let stdout = std::io::stdout();
|
|
let mut handle = stdout.lock();
|
|
handle.write_all(b"\nHTML output:\n").unwrap();
|
|
html::write_html(&mut handle, parser).unwrap();
|
|
}
|