Loading the compiled templates into a context
This commit is contained in:
parent
743106684a
commit
2842d0a14a
@ -2,6 +2,7 @@ extern crate nom;
|
|||||||
|
|
||||||
use renderer::compile_template;
|
use renderer::compile_template;
|
||||||
use renderer::CompiledTemplate;
|
use renderer::CompiledTemplate;
|
||||||
|
use renderer::DustContext;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io::{self, Read};
|
use std::io::{self, Read};
|
||||||
@ -12,7 +13,6 @@ mod renderer;
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let context = read_context_from_stdin();
|
let context = read_context_from_stdin();
|
||||||
println!("{:?}", context);
|
|
||||||
|
|
||||||
let argv: Vec<String> = env::args().collect();
|
let argv: Vec<String> = env::args().collect();
|
||||||
if argv.len() < 2 {
|
if argv.len() < 2 {
|
||||||
@ -30,12 +30,15 @@ fn main() {
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|(p, contents)| template_from_file(p, contents))
|
.map(|(p, contents)| template_from_file(p, contents))
|
||||||
.collect();
|
.collect();
|
||||||
|
let mut dust_context = DustContext::new();
|
||||||
|
compiled_templates.iter().for_each(|template| {
|
||||||
|
dust_context.load_source(template);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn template_from_file<'a>(file_path: &str, file_contents: &'a str) -> CompiledTemplate<'a> {
|
fn template_from_file<'a>(file_path: &str, file_contents: &'a str) -> CompiledTemplate<'a> {
|
||||||
let path: &Path = Path::new(file_path);
|
let path: &Path = Path::new(file_path);
|
||||||
let name = path.file_stem().unwrap();
|
let name = path.file_stem().unwrap();
|
||||||
println!("{:?}", name);
|
|
||||||
compile_template(file_contents, name.to_string_lossy().to_string())
|
compile_template(file_contents, name.to_string_lossy().to_string())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,3 +4,4 @@ mod renderer;
|
|||||||
|
|
||||||
pub use renderer::compile_template;
|
pub use renderer::compile_template;
|
||||||
pub use renderer::CompiledTemplate;
|
pub use renderer::CompiledTemplate;
|
||||||
|
pub use renderer::DustContext;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use crate::parser::template;
|
use crate::parser::template;
|
||||||
use crate::parser::Template;
|
use crate::parser::Template;
|
||||||
use nom::IResult;
|
use nom::IResult;
|
||||||
|
use std::collections::BTreeMap;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct CompiledTemplate<'a> {
|
pub struct CompiledTemplate<'a> {
|
||||||
@ -8,6 +9,11 @@ pub struct CompiledTemplate<'a> {
|
|||||||
name: String,
|
name: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub struct DustContext<'a> {
|
||||||
|
templates: BTreeMap<&'a String, &'a Template<'a>>,
|
||||||
|
}
|
||||||
|
|
||||||
pub fn compile_template<'a>(source: &'a str, name: String) -> CompiledTemplate<'a> {
|
pub fn compile_template<'a>(source: &'a str, name: String) -> CompiledTemplate<'a> {
|
||||||
// TODO: Make this function return a result with a custom error type. Break the nom IResult chain
|
// TODO: Make this function return a result with a custom error type. Break the nom IResult chain
|
||||||
// TODO: Make this all consuming
|
// TODO: Make this all consuming
|
||||||
@ -17,3 +23,15 @@ pub fn compile_template<'a>(source: &'a str, name: String) -> CompiledTemplate<'
|
|||||||
name: name,
|
name: name,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a> DustContext<'a> {
|
||||||
|
pub fn new() -> DustContext<'a> {
|
||||||
|
DustContext {
|
||||||
|
templates: BTreeMap::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn load_source(&mut self, template: &'a CompiledTemplate) {
|
||||||
|
self.templates.insert(&template.name, &template.template);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user