| #![allow(clippy::uninlined_format_args)] |
| |
| use proc_macro::TokenStream; |
| use proc_macro2::Ident; |
| use quote::quote; |
| use syn::{parse_macro_input, ItemFn}; |
| |
| #[proc_macro_attribute] |
| pub fn corresponds(attr: TokenStream, item: TokenStream) -> TokenStream { |
| let function = parse_macro_input!(attr as Ident); |
| let item = parse_macro_input!(item as ItemFn); |
| |
| let function = function.to_string(); |
| let line = format!( |
| "This corresponds to [`{0}`](https://www.openssl.org/docs/manmaster/man3/{0}.html).", |
| function |
| ); |
| |
| let attrs = item.attrs; |
| let vis = item.vis; |
| let sig = item.sig; |
| let block = item.block; |
| |
| let out = quote! { |
| #(#attrs)* |
| #[doc = ""] |
| #[doc = #line] |
| #[doc(alias = #function)] |
| #vis #sig #block |
| }; |
| out.into() |
| } |