#![recursion_limit="100"]
#![warn(missing_docs)]
extern crate combine;
extern crate owning_ref;
extern crate regex;
#[macro_use] extern crate quick_error;
#[macro_use] extern crate matches;
#[cfg(test)] #[macro_use] extern crate difference;
#[cfg(feature="json")] extern crate serde_json;
mod compare;
mod escape;
mod grammar;
mod helpers;
mod indent;
mod number;
mod oneline;
mod optimize;
mod options;
mod output;
mod owning;
mod parse_error;
mod position;
mod preparser;
mod render;
mod render_error;
mod std_vars;
mod box_vars;
mod tokenizer;
mod validators;
mod varmap;
mod vars;
#[cfg(feature="json")] mod serde;
#[cfg(test)] mod tests;
pub use grammar::Parser;
pub use parse_error::ParseError;
pub use position::Pos;
pub use render_error::{RenderError, DataError};
pub use render::Template;
pub use vars::{Variable};
pub use varmap::Context;
pub use number::Number;
pub use compare::Comparable;
#[cfg(feature="json")] pub use serde::render_json;
use std::collections::HashMap;
use vars::Val;
#[derive(Debug, Clone)]
pub struct Options {
syntax: preparser::Syntax,
new_line_at_eof: Option<bool>,
curly: bool,
square: bool,
round: bool,
default_filter: validators::Filter,
filters: HashMap<String, validators::Filter>,
}
pub struct Var<'a, 'render: 'a>(Val<'a, 'render>);
pub struct Output<'x>(output::OutImpl<'x>);