Moved ParametersContext to its own file.
This commit is contained in:
parent
1a6db195cb
commit
b45448edbd
@ -6,6 +6,7 @@ pub use parser::template;
|
||||
pub use parser::Body;
|
||||
pub use parser::DustTag;
|
||||
pub use parser::Filter;
|
||||
pub use parser::KVPair;
|
||||
pub use parser::RValue;
|
||||
pub use parser::Special;
|
||||
pub use parser::Template;
|
||||
|
@ -125,9 +125,9 @@ pub enum RValue<'a> {
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
struct KVPair<'a> {
|
||||
key: &'a str,
|
||||
value: RValue<'a>,
|
||||
pub struct KVPair<'a> {
|
||||
pub key: &'a str,
|
||||
pub value: RValue<'a>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
mod context_element;
|
||||
mod errors;
|
||||
mod parameters_context;
|
||||
mod renderer;
|
||||
|
||||
pub use context_element::ContextElement;
|
||||
|
28
src/renderer/parameters_context.rs
Normal file
28
src/renderer/parameters_context.rs
Normal file
@ -0,0 +1,28 @@
|
||||
use crate::parser::KVPair;
|
||||
use crate::parser::RValue;
|
||||
use crate::renderer::context_element::ContextElement;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct ParametersContext<'a> {
|
||||
params: HashMap<&'a str, &'a RValue<'a>>,
|
||||
breadcrumbs: &'a Vec<&'a dyn ContextElement>,
|
||||
}
|
||||
|
||||
impl<'a> ParametersContext<'a> {
|
||||
pub fn new(
|
||||
breadcrumbs: &'a Vec<&'a dyn ContextElement>,
|
||||
params: &'a Vec<KVPair<'a>>,
|
||||
) -> ParametersContext<'a> {
|
||||
let param_map = params
|
||||
.iter()
|
||||
.map(|pair: &KVPair<'a>| (pair.key, &pair.value))
|
||||
.collect();
|
||||
ParametersContext {
|
||||
params: param_map,
|
||||
breadcrumbs: breadcrumbs,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> ContextElement for ParametersContext<'a> {}
|
@ -1,13 +1,13 @@
|
||||
use crate::parser::template;
|
||||
use crate::parser::Body;
|
||||
use crate::parser::DustTag;
|
||||
use crate::parser::RValue;
|
||||
use crate::parser::Special;
|
||||
use crate::parser::Template;
|
||||
use crate::parser::TemplateElement;
|
||||
use crate::renderer::context_element::ContextElement;
|
||||
use crate::renderer::errors::CompileError;
|
||||
use crate::renderer::errors::RenderError;
|
||||
use crate::renderer::parameters_context::ParametersContext;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
@ -254,11 +254,6 @@ fn walk_path<'a>(
|
||||
})
|
||||
}
|
||||
|
||||
struct ParametersContext<'a> {
|
||||
params: HashMap<&'a str, RValue<'a>>,
|
||||
breadcrumbs: &'a Vec<&'a dyn ContextElement>,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
Loading…
x
Reference in New Issue
Block a user