From df58dcb49db77b2c283db3c9a8a738bdff3a8e37 Mon Sep 17 00:00:00 2001 From: larros Date: Tue, 26 Sep 2017 10:02:44 +0200 Subject: Add support for importing template files with macros (#51) * Fix review comments for macro imports --- askama_shared/src/parser.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'askama_shared/src/parser.rs') diff --git a/askama_shared/src/parser.rs b/askama_shared/src/parser.rs index ab79a31..083e96b 100644 --- a/askama_shared/src/parser.rs +++ b/askama_shared/src/parser.rs @@ -42,6 +42,7 @@ pub enum Node<'a> { Extends(Expr<'a>), BlockDef(WS, &'a str, Vec>, WS), Include(WS, &'a str), + Import(WS, &'a str), Macro(&'a str, Macro<'a>), } @@ -388,6 +389,17 @@ named!(block_include, do_parse!( })) )); +named!(block_import, do_parse!( + pws: opt!(tag_s!("-")) >> + ws!(tag_s!("import")) >> + name: ws!(expr_str_lit) >> + nws: opt!(tag_s!("-")) >> + (Node::Import(WS(pws.is_some(), nws.is_some()), match name { + Expr::StrLit(s) => s, + _ => panic!("import path must be a string literal"), + })) +)); + named!(block_macro, do_parse!( pws1: opt!(tag_s!("-")) >> ws!(tag_s!("macro")) >> @@ -420,6 +432,7 @@ named!(block_node, do_parse!( block_for | block_extends | block_include | + block_import | block_block | block_macro ) >> -- cgit