pub struct Template {
pub name: String,
pub path: Option<String>,
pub ast: Vec<Node>,
pub from_extend: bool,
pub macros: HashMap<String, MacroDefinition>,
pub imported_macro_files: Vec<(String, String)>,
pub parent: Option<String>,
pub blocks: HashMap<String, Block>,
pub parents: Vec<String>,
pub blocks_definitions: HashMap<String, Vec<(String, Block)>>,
}
Expand description
This is the parsed equivalent of a template file. It also does some pre-processing to ensure it does as little as possible at runtime Not meant to be used directly.
Fields§
§name: String
Name of the template, usually very similar to the path
path: Option<String>
Original path of the file. A template doesn’t necessarily have a file associated with it though so it’s optional.
ast: Vec<Node>
Parsed AST, after whitespace removal
from_extend: bool
Whether this template came from a call to Tera::extend
, so we do
not remove it when we are doing a template reload
macros: HashMap<String, MacroDefinition>
Macros defined in that file: name -> definition ast
imported_macro_files: Vec<(String, String)>
(filename, namespace) for the macros imported in that file
parent: Option<String>
Only used during initial parsing. Rendering will use self.parents
blocks: HashMap<String, Block>
Only used during initial parsing. Rendering will use self.blocks_definitions
parents: Vec<String>
The full list of parent templates
blocks_definitions: HashMap<String, Vec<(String, Block)>>
The definition of all the blocks for the current template and the definition of those blocks
in parent templates if there are some.
Needed for super() to work without having to find them each time.
The type corresponds to the following block_name -> [(template name, definition)]
The order of the Vec is from the first in hierarchy to the current template and the template
name is needed in order to load its macros if necessary.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Template
impl RefUnwindSafe for Template
impl Send for Template
impl Sync for Template
impl Unpin for Template
impl UnwindSafe for Template
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more