1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#![feature(proc_macro_hygiene)]
#[macro_use] extern crate quote;
#[macro_use] extern crate log;
#[macro_use] extern crate pest_derive;
#[macro_use] extern crate json;
extern crate proc_macro;
extern crate proc_macro2;
extern crate pest;
mod generators;
use std::fs;
use proc_macro::{TokenStream};
#[proc_macro_attribute]
pub fn controller(_attrs: TokenStream, input: TokenStream) -> TokenStream {
input
}
#[proc_macro_attribute]
pub fn atrax_app(attrs: TokenStream, _input: TokenStream) -> TokenStream {
let filename = attrs.to_string();
let body = fs::read_to_string(&filename)
.expect(&format!("Something went wrong reading {}", &filename)[..]);
let mut app_token = generators::app_generator::AppGenerator::new(body);
let stream: proc_macro::TokenStream = app_token.generate().parse().unwrap();
stream
}