Compare commits

..

3 Commits
v0.1.0 ... main

3 changed files with 9 additions and 8 deletions

View File

@ -1,6 +1,6 @@
[package] [package]
name = "lfcm" name = "lfcm"
version = "0.0.0" version = "0.1.0"
authors = ["Linus Vogel <linus@linvogel.ch>"] authors = ["Linus Vogel <linus@linvogel.ch>"]
description = "A `cargo generate` template for quick-starting a procedural macro crate" description = "A `cargo generate` template for quick-starting a procedural macro crate"
keywords = ["template", "proc_macro", "procmacro"] keywords = ["template", "proc_macro", "procmacro"]

View File

@ -219,7 +219,7 @@ fn emit_section_struct(out: &mut proc_macro2::TokenStream, section: &ParseConfig
let type_name_ident = Ident::new(type_name.as_str(), subsection.name.span()); let type_name_ident = Ident::new(type_name.as_str(), subsection.name.span());
let var_name = subsection.name.clone(); let var_name = subsection.name.clone();
quote! { quote! {
pub #var_name: #type_name_ident pub #var_name: #type_name_ident,
} }
}).collect::<Vec<_>>(); }).collect::<Vec<_>>();
@ -229,8 +229,8 @@ fn emit_section_struct(out: &mut proc_macro2::TokenStream, section: &ParseConfig
let struct_stream = quote! { let struct_stream = quote! {
#[derive(Debug)] #[derive(Debug)]
pub struct #type_name_ident { pub struct #type_name_ident {
#(#vars),* #(#vars)*
#(#subsections),* #(#subsections)*
} }
}; };
@ -248,7 +248,7 @@ fn emit_section_deser_impl(out: &mut proc_macro2::TokenStream, section: &ParseCo
Ok (value) => value, Ok (value) => value,
Err (_config_deser::ConfigError::NotFound(_)) => #var_default, Err (_config_deser::ConfigError::NotFound(_)) => #var_default,
Err (x) => return Err(LFCMError::ParseError(x)) Err (x) => return Err(LFCMError::ParseError(x))
} },
} }
}).collect::<Vec<_>>(); }).collect::<Vec<_>>();
@ -258,7 +258,7 @@ fn emit_section_deser_impl(out: &mut proc_macro2::TokenStream, section: &ParseCo
let subsection_type_name = Ident::new(capitalize_name(&subsection.name.to_string()).as_str(), subsection.name.span()); let subsection_type_name = Ident::new(capitalize_name(&subsection.name.to_string()).as_str(), subsection.name.span());
let subsection_name_lit = Literal::string(subsection.name.to_string().as_str()); let subsection_name_lit = Literal::string(subsection.name.to_string().as_str());
quote!{ quote!{
#subsection_name: #subsection_type_name::deser(cfg, (prefix.to_owned() + #subsection_name_lit + ".").as_str())? #subsection_name: #subsection_type_name::deser(cfg, (prefix.to_owned() + #subsection_name_lit + ".").as_str())?,
} }
}).collect::<Vec<_>>(); }).collect::<Vec<_>>();
@ -268,8 +268,8 @@ fn emit_section_deser_impl(out: &mut proc_macro2::TokenStream, section: &ParseCo
impl #section_type_name_ident { impl #section_type_name_ident {
fn deser(cfg: &_config_deser::Config, prefix: &str) -> Result<Self, LFCMError> { fn deser(cfg: &_config_deser::Config, prefix: &str) -> Result<Self, LFCMError> {
Ok (Self { Ok (Self {
#(#var_deser_parts,)* #(#var_deser_parts)*
#(#subsection_deser_parts,)* #(#subsection_deser_parts)*
}) })
} }
} }

View File

@ -6,6 +6,7 @@ config! {
param name = Config; param name = Config;
section top { section top {
var rand: u64 = 42; var rand: u64 = 42;
var funny: i64 = 24;
section database { section database {
var seed: u64 = 42; var seed: u64 = 42;
} }