diff options
| author | Jokler <jokler.contact@gmail.com> | 2017-11-30 15:28:05 +0100 |
|---|---|---|
| committer | Jokler <jokler.contact@gmail.com> | 2017-11-30 21:03:13 +0100 |
| commit | 413f5d96e9fe4e990e5cd485abe828e0fb5c7ed4 (patch) | |
| tree | 1f5179ba03a6ac591ecb570d86de9f7820743a64 /frippy_derive | |
| parent | 5501fdf4042db1abf82d8e791b47d1802e710f9a (diff) | |
| download | frippy-413f5d96e9fe4e990e5cd485abe828e0fb5c7ed4.tar.gz frippy-413f5d96e9fe4e990e5cd485abe828e0fb5c7ed4.zip | |
Rename plugin_derive to frippy_derive
Diffstat (limited to 'frippy_derive')
| -rw-r--r-- | frippy_derive/Cargo.toml | 11 | ||||
| -rw-r--r-- | frippy_derive/src/lib.rs | 27 |
2 files changed, 38 insertions, 0 deletions
diff --git a/frippy_derive/Cargo.toml b/frippy_derive/Cargo.toml new file mode 100644 index 0000000..937afba --- /dev/null +++ b/frippy_derive/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "frippy_derive" +version = "0.1.0" +authors = ["Jokler <jokler.contact@gmail.com>"] + +[lib] +proc-macro = true + +[dependencies] +syn = "0.11.11" +quote = "0.3.15" diff --git a/frippy_derive/src/lib.rs b/frippy_derive/src/lib.rs new file mode 100644 index 0000000..704d6ef --- /dev/null +++ b/frippy_derive/src/lib.rs @@ -0,0 +1,27 @@ + +//! Provides the plugin derive macro + +extern crate proc_macro; +extern crate syn; +#[macro_use] +extern crate quote; + +use proc_macro::TokenStream; + +#[proc_macro_derive(PluginName)] +pub fn derive_plugin(data: TokenStream) -> TokenStream { + let ast = syn::parse_derive_input(&data.to_string()).unwrap(); + let gen = expand_plugin(&ast); + gen.parse().unwrap() +} + +fn expand_plugin(ast: &syn::DeriveInput) -> quote::Tokens { + let name = &ast.ident; + quote! { + impl PluginName for #name { + fn name(&self) -> &str { + stringify!(#name) + } + } + } +} |
