Working on flatten
This commit is contained in:
		
							parent
							
								
									10e02eb555
								
							
						
					
					
						commit
						c76ad9fe59
					
				| @ -85,6 +85,29 @@ fn ser_list_of_items() { | |||||||
|   // SubStruct has 'rename' set, but it's ignored because SubStruct is used as a field of XmlStructOfStructRenamedField that overrides the 'rename
 |   // SubStruct has 'rename' set, but it's ignored because SubStruct is used as a field of XmlStructOfStructRenamedField that overrides the 'rename
 | ||||||
|   let content = "<base><listField><field>something1</field></listField><listField><field>something2</field></listField></base>"; |   let content = "<base><listField><field>something1</field></listField><listField><field>something2</field></listField></base>"; | ||||||
|   serialize_and_validate!(model3, content); |   serialize_and_validate!(model3, content); | ||||||
|  | 
 | ||||||
|  |   #[derive(YaSerialize, PartialEq, Debug)] | ||||||
|  |   #[yaserde(rename = "base")] | ||||||
|  |   pub struct XmlStructOfStructRenamedFlattenedField { | ||||||
|  |     //#[yaserde(flatten)]
 | ||||||
|  |     items: Vec<SubStruct>, | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   let model3 = XmlStructOfStructRenamedFlattenedField { | ||||||
|  |     items: vec![ | ||||||
|  |       SubStruct { | ||||||
|  |         field: "something1".to_string(), | ||||||
|  |       }, | ||||||
|  |       SubStruct { | ||||||
|  |         field: "something2".to_string(), | ||||||
|  |       }, | ||||||
|  |     ], | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   // SubStruct has 'rename' set, but it's ignored because SubStruct is used as a field of XmlStructOfStructRenamedFlattenedField that overrides the 'rename
 | ||||||
|  |   let content = "<base><items><field>something1</field></items><items><field>something2</field></items></base>"; | ||||||
|  |   //let content = "<base><field>something1</field><field>something2</field></base>";
 | ||||||
|  |   serialize_and_validate!(model3, content); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[test] | #[test] | ||||||
|  | |||||||
| @ -267,13 +267,27 @@ pub fn serialize( | |||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }), |           }), | ||||||
|           Field::FieldStruct { .. } => Some(quote! { |           Field::FieldStruct { .. } => { | ||||||
|  |           Some(quote! { | ||||||
|  |             //&self.#label
 | ||||||
|             for item in &self.#label { |             for item in &self.#label { | ||||||
|               writer.set_start_event_name(Some(#label_name.to_string())); |               writer.set_start_event_name(Some(#label_name.to_string())); | ||||||
|               writer.set_skip_start_end(false); |               writer.set_skip_start_end(false); | ||||||
|               item.serialize(writer)?; |               item.serialize(writer)?; | ||||||
|             } |             } | ||||||
|           }), |           }) | ||||||
|  | //         let (start_event, skip_start) = if field.is_flatten() {
 | ||||||
|  | //             (quote!(None), true)
 | ||||||
|  | //           } else {
 | ||||||
|  | //             (quote!(Some(#label_name.to_string())), false)
 | ||||||
|  | //           };
 | ||||||
|  | //
 | ||||||
|  | //           Some(quote! {
 | ||||||
|  | //             writer.set_start_event_name(#start_event);
 | ||||||
|  | //             writer.set_skip_start_end(#skip_start);
 | ||||||
|  | //             self.#label.serialize(writer)?;
 | ||||||
|  | //           })
 | ||||||
|  |            }, | ||||||
|           Field::FieldVec { .. } => { |           Field::FieldVec { .. } => { | ||||||
|             unimplemented!(); |             unimplemented!(); | ||||||
|           } |           } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user