Skip to content

Commit

Permalink
former : experimenting
Browse files Browse the repository at this point in the history
  • Loading branch information
Wandalen committed Apr 27, 2024
1 parent ec837ae commit 663fe74
Showing 1 changed file with 22 additions and 8 deletions.
30 changes: 22 additions & 8 deletions module/core/former_meta/src/derive/former.rs
Original file line number Diff line number Diff line change
Expand Up @@ -956,21 +956,34 @@ Result< TokenStream >
return Ok( qt!{ } );
}

// example : `former::VectorDefinition``
let subformer_definition = &field.attrs.container.as_ref().unwrap().expr;

use convert_case::{ Case, Casing };
let field_ident = field.ident;
let field_ty = field.non_optional_ty;
let params = typ::type_parameters( &field.non_optional_ty, .. );
let params = typ::type_parameters( field_ty, .. );

// example : `ParentFormerAssignChildsEnd``
let former_assign_end_name = format!( "{}FormerAssign{}End", stru, field_ident.to_string().to_case( Case::Pascal ) );
let former_assign_end = syn::Ident::new( &former_assign_end_name, field_ident.span() );

// // example : `ParentFormerAddChildsEnd``
// let parent_add_element_end_name = format!( "{}FormerAdd{}End2", stru, field_ident.to_string().to_case( Case::Pascal ) );
// let parent_add_element_end = syn::Ident::new( &parent_add_element_end_name, field_ident.span() );
// example : `former::VectorDefinition``
let subformer_definition = &field.attrs.container.as_ref().unwrap().expr;

let subformer_definition = if subformer_definition.is_some()
{
qt!
{
#subformer_definition < #( #params, )* #former< #former_generics_ty >, #former< #former_generics_ty >, former::NoEnd >
}
// former::VectorDefinition< String, Struct1Former< Definition, >, Struct1Former< Definition, >, former::NoEnd >
}
else
{
qt!
{
< #field_ty as former::EntityToDefinition< #former< #former_generics_ty >, #former< #former_generics_ty >, former::NoEnd > >::Definition
}
// < Vec< String > as former::EntityToDefinition< Struct1Former< Definition, >, Struct1Former< Definition, >, former::NoEnd > >::Definition
};

let r = qt!
{
Expand All @@ -983,7 +996,8 @@ Result< TokenStream >
#[ automatically_derived ]
impl< #former_generics_impl > former::FormingEnd
<
#subformer_definition < #( #params, )* #former< #former_generics_ty >, #former< #former_generics_ty >, former::NoEnd >,
// #subformer_definition < #( #params, )* #former< #former_generics_ty >, #former< #former_generics_ty >, former::NoEnd >,
#subformer_definition,
>
for #former_assign_end
where
Expand Down

0 comments on commit 663fe74

Please sign in to comment.