2017-07-07 22:59:20 +12:00
|
|
|
#![feature(proc_macro)]
|
2016-12-29 12:20:08 +13:00
|
|
|
#![recursion_limit = "1000"] // if_chain
|
2014-12-17 21:11:56 +13:00
|
|
|
|
2017-06-19 21:24:51 +12:00
|
|
|
#![doc(html_root_url = "https://docs.rs/maud_macros/0.16.3")]
|
2017-05-13 14:16:41 +12:00
|
|
|
|
2016-12-29 12:20:08 +13:00
|
|
|
#[macro_use]
|
|
|
|
extern crate if_chain;
|
2017-07-07 22:59:20 +12:00
|
|
|
extern crate literalext;
|
|
|
|
extern crate proc_macro;
|
|
|
|
|
|
|
|
// TODO move lints into their own `maud_lints` crate
|
|
|
|
// mod lints;
|
2014-12-18 18:57:55 +13:00
|
|
|
mod parse;
|
|
|
|
mod render;
|
2014-12-17 21:11:56 +13:00
|
|
|
|
2017-07-07 22:59:20 +12:00
|
|
|
use proc_macro::TokenStream;
|
|
|
|
|
|
|
|
type ParseResult<T> = Result<T, String>;
|
2016-01-01 11:43:59 +13:00
|
|
|
|
2017-07-07 22:59:20 +12:00
|
|
|
#[proc_macro]
|
|
|
|
pub fn html(args: TokenStream) -> TokenStream {
|
|
|
|
match parse::parse(args) {
|
|
|
|
Ok(expr) => expr,
|
|
|
|
Err(e) => panic!(e),
|
2016-09-23 19:22:22 +12:00
|
|
|
}
|
2016-08-15 20:32:39 +12:00
|
|
|
}
|
|
|
|
|
2017-07-07 22:59:20 +12:00
|
|
|
#[proc_macro]
|
|
|
|
pub fn html_debug(args: TokenStream) -> TokenStream {
|
|
|
|
match parse::parse(args) {
|
2016-09-23 19:22:22 +12:00
|
|
|
Ok(expr) => {
|
2017-07-07 22:59:20 +12:00
|
|
|
println!("expansion:\n{}", expr);
|
|
|
|
expr
|
2016-09-23 19:22:22 +12:00
|
|
|
},
|
2017-07-07 22:59:20 +12:00
|
|
|
Err(e) => panic!(e),
|
2015-09-07 19:43:48 +12:00
|
|
|
}
|
2015-04-13 20:20:02 +12:00
|
|
|
}
|
|
|
|
|
2017-07-07 22:59:20 +12:00
|
|
|
/*
|
2014-12-17 21:11:56 +13:00
|
|
|
#[plugin_registrar]
|
|
|
|
pub fn plugin_registrar(reg: &mut Registry) {
|
2015-09-03 11:03:45 +12:00
|
|
|
reg.register_macro("html", expand_html);
|
|
|
|
reg.register_macro("html_debug", expand_html_debug);
|
2016-12-26 22:04:45 +13:00
|
|
|
lints::register_lints(reg);
|
2014-12-17 21:11:56 +13:00
|
|
|
}
|
2017-07-07 22:59:20 +12:00
|
|
|
*/
|