commit c896b9f826b590144ce997a3d02c6d75e6c3aa24 Author: kitsunecafe <10284516+kitsunecafe@users.noreply.github.com> Date: Mon Jan 29 05:42:38 2024 -0500 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4fffb2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +/Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..c5122c3 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "roxy_markdown_tera_rewriter" +version = "0.1.0" +edition = "2021" + +[dependencies] +lol_html = "1.2.0" +regex = "1.10.3" +roxy_core = { git = "https://github.com/kitsunecafe/roxy-core.git" } + diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..0746a64 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,33 @@ +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 +} + +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

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) -> std::io::Result<()> { + Ok(()) + } +}