34 lines
990 B
Rust
34 lines
990 B
Rust
use regex::Regex;
|
|
use lol_html::{element, HtmlRewriter};
|
|
use roxy_core::roxy::Parse;
|
|
|
|
const EXTENSION_RE: &'static Regex = Regex::new("{% extends \"?.+\"? %}");
|
|
|
|
pub struct MarkdownTeraParser<'a, F: FnMut(&'a [u8]) -> ()> {
|
|
rewriter: HtmlRewriter<'a, F>,
|
|
output: Vec<u8>
|
|
}
|
|
|
|
impl<'a, O: FnMut(&'a [u8]) -> ()> MarkdownTeraParser<'a, O> {
|
|
pub fn new() -> Self {
|
|
let mut output = vec![];
|
|
Self {
|
|
rewriter: HtmlRewriter::new(lol_html::Settings {
|
|
element_content_handlers: vec![element!("p", |el| {
|
|
|
|
if
|
|
})],
|
|
..Default::default()
|
|
}, |c: &[u8]| output.extend_from_slice(c)),
|
|
output
|
|
}
|
|
}
|
|
}
|
|
|
|
// TODO: use an html->dom parser to strip <p> tags around tera placeholders
|
|
impl<'a, O: FnMut(&'a [u8]) -> ()> Parse for MarkdownTeraParser<'a, O> {
|
|
fn parse(&mut self, path: &str, src: &[u8], dst: &mut Vec<u8>) -> std::io::Result<()> {
|
|
Ok(())
|
|
}
|
|
}
|