Skip to content

Commit

Permalink
Add generated code logging
Browse files Browse the repository at this point in the history
  • Loading branch information
antoyo committed Aug 15, 2017
1 parent ca5887b commit 2abbdc7
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
2 changes: 2 additions & 0 deletions relm-attributes/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ repository = "https://github.com/antoyo/relm"
version = "0.9.0"

[dependencies]
env_logger = "^0.4.2"
log = "^0.3.7"
quote = "^0.3.15"
syn = "^0.11.9"

Expand Down
18 changes: 18 additions & 0 deletions relm-attributes/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,41 @@

#![feature(proc_macro)]

extern crate env_logger;
#[macro_use]
extern crate log;
extern crate proc_macro;
#[macro_use]
extern crate quote;
extern crate relm_gen_widget;
extern crate syn;

use std::env;

use env_logger::LogBuilder;
use log::LogRecord;
use proc_macro::TokenStream;
use relm_gen_widget::gen_widget;
use syn::parse_item;

#[proc_macro_attribute]
pub fn widget(_attributes: TokenStream, input: TokenStream) -> TokenStream {
let format = |record: &LogRecord| {
record.args().to_string()
};
let mut builder = LogBuilder::new();
builder.format(format);
if let Ok(rust_log) = env::var("RUST_LOG") {
builder.parse(&rust_log);
}
builder.init().ok();

let source = input.to_string();
let ast = parse_item(&source).unwrap();
let tokens = quote! {
#ast
};
let expanded = gen_widget(tokens);
error!("{}", expanded.parse::<String>().unwrap());
expanded.parse().unwrap()
}

0 comments on commit 2abbdc7

Please sign in to comment.