aboutsummaryrefslogtreecommitdiffstats
path: root/frippy_derive
diff options
context:
space:
mode:
authorJokler <jokler.contact@gmail.com>2017-11-30 15:28:05 +0100
committerJokler <jokler.contact@gmail.com>2017-11-30 21:03:13 +0100
commit413f5d96e9fe4e990e5cd485abe828e0fb5c7ed4 (patch)
tree1f5179ba03a6ac591ecb570d86de9f7820743a64 /frippy_derive
parent5501fdf4042db1abf82d8e791b47d1802e710f9a (diff)
downloadfrippy-413f5d96e9fe4e990e5cd485abe828e0fb5c7ed4.tar.gz
frippy-413f5d96e9fe4e990e5cd485abe828e0fb5c7ed4.zip
Rename plugin_derive to frippy_derive
Diffstat (limited to 'frippy_derive')
-rw-r--r--frippy_derive/Cargo.toml11
-rw-r--r--frippy_derive/src/lib.rs27
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)
+ }
+ }
+ }
+}