power_flow_data_derive/
lib.rs1use proc_macro::TokenStream;
2use quote::quote;
3use syn::{parse_macro_input, DeriveInput};
4
5#[proc_macro_derive(RawRecord, attributes(rev30, rev33, line2, line3, line4, line5))]
6pub fn derive_raw_record(input: TokenStream) -> TokenStream {
7 let input = parse_macro_input!(input as DeriveInput);
8
9 let name = input.ident;
10
11 let expanded = match input.data {
12 syn::Data::Struct(_data) => {
13 quote! {
14 impl RawRecord for #name {
15 fn parse_raw(input: &str) -> nom::IResult<&str, Self> {
16 Ok((input, Self::default()))
17 }
18 }
19 }
20 }
21 syn::Data::Enum(_) | syn::Data::Union(_) => {
22 panic!("#[derive(RawRecord)] must be applied to a struct")
23 }
24 };
25
26 TokenStream::from(expanded)
27}