Skip to content

Commit

Permalink
chore: Add hello-world macro code
Browse files Browse the repository at this point in the history
  • Loading branch information
ajaykumargdr committed Dec 27, 2023
1 parent 19cf127 commit f9c07c2
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
15 changes: 15 additions & 0 deletions workflow/hello_world_macro/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[package]
name = "hello_world_macro"
version = "0.0.1"
edition = "2018"
authors = ["HugoByte <[email protected]>"]
repository = "https://github.com/HugoByte/internal-research-and-sample-code/tree/hello-world-workflow-macro"
license = "Apache-2.0"
description = "Derive macro for hello world workflow"

[dependencies]
quote = "1.0.33"
syn = "2.0.29"

[lib]
proc-macro = true
23 changes: 23 additions & 0 deletions workflow/hello_world_macro/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
extern crate proc_macro;

use proc_macro::TokenStream;
use syn::DeriveInput;

#[proc_macro_derive(HelloWorldDerive)]
pub fn hello_world_derive_macro(item: TokenStream) -> TokenStream {

let ast: DeriveInput = syn::parse(item).unwrap();
let ident = ast.ident;

// implement the function and return as TokenStream object
quote::quote! {
impl #ident{
pub fn run(&mut self) -> Result<(), String>{
self.output = serde_json::to_value(format!("Hello {}", self.input.name))
.map_err(|e|e.to_string())?;
Ok(())
}
}
}
.into()
}

0 comments on commit f9c07c2

Please sign in to comment.