incrust 0.0.15

Template engine inspired by Jinja2
Documentation
use super::abc::*;


pub struct Context<'a> {
    parent_scope: Option<&'a Context<'a>>,
    local_scope: &'a Args<'a>,
}


impl <'a> Into<Context<'a>> for &'a Args<'a> { fn into(self) -> Context<'a> { Context::new(None, self) } }

impl <'a> Context<'a> {
    pub fn new(parent_scope: Option<&'a Context<'a>>, local_scope: &'a Args<'a>) -> Self {
        Context { parent_scope: parent_scope, local_scope: local_scope }
    }

    pub fn get<'b>(&self, id: &str) -> Option<&'b BType> {
        self.local_scope.get(id)
            .or_else(|| self.parent_scope.and_then(|scope| scope.get(id)))
    }
}