From 97e806a96888c3988f766e019c04dd7102a892e0 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 9 May 2020 21:01:37 -0400 Subject: [PATCH] Start of structure for extracting inline partials from a template. --- src/renderer/inline_partial_tree.rs | 33 +++++++++++++++++++++++++++++ src/renderer/mod.rs | 1 + 2 files changed, 34 insertions(+) create mode 100644 src/renderer/inline_partial_tree.rs diff --git a/src/renderer/inline_partial_tree.rs b/src/renderer/inline_partial_tree.rs new file mode 100644 index 0000000..bf328c6 --- /dev/null +++ b/src/renderer/inline_partial_tree.rs @@ -0,0 +1,33 @@ +use crate::parser::Body; +use crate::parser::Template; +use std::collections::HashMap; + +struct InlinePartialTreeElement<'a> { + parent: Option<&'a InlinePartialTreeElement<'a>>, + blocks: HashMap<&'a str, &'a Option>>, +} + +impl<'a> InlinePartialTreeElement<'a> { + pub fn new(parent: Option<&'a InlinePartialTreeElement<'a>>) -> InlinePartialTreeElement<'a> { + InlinePartialTreeElement { + parent: parent, + blocks: HashMap::new(), + } + } +} + +pub fn extract_inline_partials<'a>( + template: &'a Template<'a>, +) -> HashMap<&'a str, &'a Option>> { + let mut blocks: HashMap<&'a str, &'a Option>> = HashMap::new(); + + extract_inline_partials_from_body(&mut blocks, &template.contents); + + blocks +} + +fn extract_inline_partials_from_body<'a, 'b>( + blocks: &'b mut HashMap<&'a str, &'a Option>>, + body: &'a Body<'a>, +) { +} diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index 13d2ede..70f423b 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -2,6 +2,7 @@ mod context_element; mod errors; +mod inline_partial_tree; mod parameters_context; mod renderer; mod walking;