removed need for xml-rs and log in projects using yaserde
				
					
				
			This commit is contained in:
		
							parent
							
								
									1ed18f5ff8
								
							
						
					
					
						commit
						979ea4c23d
					
				| @ -8,6 +8,3 @@ edition = "2018" | |||||||
| [dependencies] | [dependencies] | ||||||
| yaserde = {version = "0.7.0", path = "../yaserde" } | yaserde = {version = "0.7.0", path = "../yaserde" } | ||||||
| yaserde_derive = {version = "0.7.0", path = "../yaserde_derive" } | yaserde_derive = {version = "0.7.0", path = "../yaserde_derive" } | ||||||
| xml-rs = "0.8.3" |  | ||||||
| log = "0.4" |  | ||||||
| simple_logger = "1.11.0" |  | ||||||
|  | |||||||
| @ -57,10 +57,6 @@ | |||||||
| //! structs to compose the XML structure (again, see examples folder for the complete
 | //! structs to compose the XML structure (again, see examples folder for the complete
 | ||||||
| //! example).
 | //! example).
 | ||||||
| //!
 | //!
 | ||||||
| //! Be mindful that the **Cargo.toml** should not only include `yaserde` and
 |  | ||||||
| //! `yaserde_derive`, but also `xml-rs` and `log` as your dependencies...
 |  | ||||||
| //!
 |  | ||||||
| //! [FIXME: Explain better why YaSerDe does not pull `xml-rs` and `log` automatically?](https://github.com/media-io/yaserde/issues/22)
 |  | ||||||
| //!
 | //!
 | ||||||
| //!```toml
 | //!```toml
 | ||||||
| //! [dependencies]
 | //! [dependencies]
 | ||||||
| @ -68,8 +64,6 @@ | |||||||
| //! # quick-xml = { version = "0.21.0", features = [ "serialize" ] }
 | //! # quick-xml = { version = "0.21.0", features = [ "serialize" ] }
 | ||||||
| //! yaserde = "0.5.1"
 | //! yaserde = "0.5.1"
 | ||||||
| //! yaserde_derive = "0.5.1"
 | //! yaserde_derive = "0.5.1"
 | ||||||
| //! xml-rs = "0.8.3"
 |  | ||||||
| //! log = "0.4"
 |  | ||||||
| //! ```
 | //! ```
 | ||||||
| //!
 | //!
 | ||||||
| //! Last but not least, in order to have a nice, pretty printed XML output one can do:
 | //! Last but not least, in order to have a nice, pretty printed XML output one can do:
 | ||||||
| @ -88,7 +82,8 @@ | |||||||
| //! XML.
 | //! XML.
 | ||||||
| 
 | 
 | ||||||
| #[macro_use] | #[macro_use] | ||||||
| extern crate log; | pub extern crate log; | ||||||
|  | pub extern crate xml; | ||||||
| 
 | 
 | ||||||
| #[cfg(feature = "yaserde_derive")] | #[cfg(feature = "yaserde_derive")] | ||||||
| #[allow(unused_imports)] | #[allow(unused_imports)] | ||||||
|  | |||||||
| @ -32,14 +32,14 @@ pub fn parse( | |||||||
|         reader: &mut ::yaserde::de::Deserializer<R>, |         reader: &mut ::yaserde::de::Deserializer<R>, | ||||||
|       ) -> ::std::result::Result<Self, ::std::string::String> { |       ) -> ::std::result::Result<Self, ::std::string::String> { | ||||||
|         let (named_element, enum_namespace) = |         let (named_element, enum_namespace) = | ||||||
|           if let ::xml::reader::XmlEvent::StartElement{ name, .. } = reader.peek()?.to_owned() { |           if let ::yaserde::xml::reader::XmlEvent::StartElement{ name, .. } = reader.peek()?.to_owned() { | ||||||
|             (name.local_name.to_owned(), name.namespace.clone()) |             (name.local_name.to_owned(), name.namespace.clone()) | ||||||
|           } else { |           } else { | ||||||
|             (::std::string::String::from(#root), ::std::option::Option::None) |             (::std::string::String::from(#root), ::std::option::Option::None) | ||||||
|           }; |           }; | ||||||
| 
 | 
 | ||||||
|         let start_depth = reader.depth(); |         let start_depth = reader.depth(); | ||||||
|         ::log::debug!("Enum {} @ {}: start to parse {:?}", stringify!(#name), start_depth, named_element); |         ::yaserde::log::debug!("Enum {} @ {}: start to parse {:?}", stringify!(#name), start_depth, named_element); | ||||||
| 
 | 
 | ||||||
|         #namespaces_matching |         #namespaces_matching | ||||||
| 
 | 
 | ||||||
| @ -48,9 +48,9 @@ pub fn parse( | |||||||
| 
 | 
 | ||||||
|         loop { |         loop { | ||||||
|           let event = reader.peek()?.to_owned(); |           let event = reader.peek()?.to_owned(); | ||||||
|           ::log::trace!("Enum {} @ {}: matching {:?}", stringify!(#name), start_depth, event); |           ::yaserde::log::trace!("Enum {} @ {}: matching {:?}", stringify!(#name), start_depth, event); | ||||||
|           match event { |           match event { | ||||||
|             ::xml::reader::XmlEvent::StartElement { ref name, ref attributes, .. } => { |             ::yaserde::xml::reader::XmlEvent::StartElement { ref name, ref attributes, .. } => { | ||||||
|               match name.local_name.as_str() { |               match name.local_name.as_str() { | ||||||
|                 #match_to_enum |                 #match_to_enum | ||||||
|                 _named_element => { |                 _named_element => { | ||||||
| @ -58,23 +58,23 @@ pub fn parse( | |||||||
|                 } |                 } | ||||||
|               } |               } | ||||||
| 
 | 
 | ||||||
|               if let ::xml::reader::XmlEvent::Characters(content) = reader.peek()?.to_owned() { |               if let ::yaserde::xml::reader::XmlEvent::Characters(content) = reader.peek()?.to_owned() { | ||||||
|                 match content.as_str() { |                 match content.as_str() { | ||||||
|                   #match_to_enum |                   #match_to_enum | ||||||
|                   _ => {} |                   _ => {} | ||||||
|                 } |                 } | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|             ::xml::reader::XmlEvent::EndElement { ref name } => { |             ::yaserde::xml::reader::XmlEvent::EndElement { ref name } => { | ||||||
|               if name.local_name == named_element { |               if name.local_name == named_element { | ||||||
|                 break; |                 break; | ||||||
|               } |               } | ||||||
|               let _root = reader.next_event(); |               let _root = reader.next_event(); | ||||||
|             } |             } | ||||||
|             ::xml::reader::XmlEvent::Characters(ref text_content) => { |             ::yaserde::xml::reader::XmlEvent::Characters(ref text_content) => { | ||||||
|               let _root = reader.next_event(); |               let _root = reader.next_event(); | ||||||
|             } |             } | ||||||
|             ::xml::reader::XmlEvent::EndDocument => { |             ::yaserde::xml::reader::XmlEvent::EndDocument => { | ||||||
|               if #flatten { |               if #flatten { | ||||||
|                 break; |                 break; | ||||||
|               } |               } | ||||||
| @ -89,7 +89,7 @@ pub fn parse( | |||||||
|           } |           } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         ::log::debug!("Enum {} @ {}: success", stringify!(#name), start_depth); |         ::yaserde::log::debug!("Enum {} @ {}: success", stringify!(#name), start_depth); | ||||||
|         match enum_value { |         match enum_value { | ||||||
|           ::std::option::Option::Some(value) => ::std::result::Result::Ok(value), |           ::std::option::Option::Some(value) => ::std::result::Result::Ok(value), | ||||||
|           ::std::option::Option::None => { |           ::std::option::Option::None => { | ||||||
| @ -231,11 +231,11 @@ fn build_unnamed_visitor_calls( | |||||||
|           let visitor = #visitor_label{}; |           let visitor = #visitor_label{}; | ||||||
| 
 | 
 | ||||||
|           let result = reader.read_inner_value::<#field_type, _>(|reader| { |           let result = reader.read_inner_value::<#field_type, _>(|reader| { | ||||||
|             if let ::xml::reader::XmlEvent::EndElement { .. } = *reader.peek()? { |             if let ::yaserde::xml::reader::XmlEvent::EndElement { .. } = *reader.peek()? { | ||||||
|               return visitor.#visitor(""); |               return visitor.#visitor(""); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if let ::std::result::Result::Ok(::xml::reader::XmlEvent::Characters(s)) |             if let ::std::result::Result::Ok(::yaserde::xml::reader::XmlEvent::Characters(s)) | ||||||
|               = reader.next_event() |               = reader.next_event() | ||||||
|             { |             { | ||||||
|               visitor.#visitor(&s) |               visitor.#visitor(&s) | ||||||
|  | |||||||
| @ -156,7 +156,7 @@ pub fn parse( | |||||||
|               // Don't count current struct's StartElement as substruct's StartElement
 |               // Don't count current struct's StartElement as substruct's StartElement
 | ||||||
|               let _root = reader.next_event(); |               let _root = reader.next_event(); | ||||||
|             } |             } | ||||||
|             if let Ok(::xml::reader::XmlEvent::StartElement { .. }) = reader.peek() { |             if let Ok(::yaserde::xml::reader::XmlEvent::StartElement { .. }) = reader.peek() { | ||||||
|               // If substruct's start element found then deserialize substruct
 |               // If substruct's start element found then deserialize substruct
 | ||||||
|               let value = <#struct_name as ::yaserde::YaDeserialize>::deserialize(reader)?; |               let value = <#struct_name as ::yaserde::YaDeserialize>::deserialize(reader)?; | ||||||
|               #value_label #action; |               #value_label #action; | ||||||
| @ -346,13 +346,13 @@ pub fn parse( | |||||||
|         reader: &mut ::yaserde::de::Deserializer<R>, |         reader: &mut ::yaserde::de::Deserializer<R>, | ||||||
|       ) -> ::std::result::Result<Self, ::std::string::String> { |       ) -> ::std::result::Result<Self, ::std::string::String> { | ||||||
|         let (named_element, struct_namespace) = |         let (named_element, struct_namespace) = | ||||||
|           if let ::xml::reader::XmlEvent::StartElement { name, .. } = reader.peek()?.to_owned() { |           if let ::yaserde::xml::reader::XmlEvent::StartElement { name, .. } = reader.peek()?.to_owned() { | ||||||
|             (name.local_name.to_owned(), name.namespace.clone()) |             (name.local_name.to_owned(), name.namespace.clone()) | ||||||
|           } else { |           } else { | ||||||
|             (::std::string::String::from(#root), ::std::option::Option::None) |             (::std::string::String::from(#root), ::std::option::Option::None) | ||||||
|           }; |           }; | ||||||
|         let start_depth = reader.depth(); |         let start_depth = reader.depth(); | ||||||
|         ::log::debug!("Struct {} @ {}: start to parse {:?}", stringify!(#name), start_depth, |         ::yaserde::log::debug!("Struct {} @ {}: start to parse {:?}", stringify!(#name), start_depth, | ||||||
|                named_element); |                named_element); | ||||||
| 
 | 
 | ||||||
|         if reader.depth() == 0 { |         if reader.depth() == 0 { | ||||||
| @ -367,12 +367,12 @@ pub fn parse( | |||||||
| 
 | 
 | ||||||
|         loop { |         loop { | ||||||
|           let event = reader.peek()?.to_owned(); |           let event = reader.peek()?.to_owned(); | ||||||
|           ::log::trace!( |           ::yaserde::log::trace!( | ||||||
|             "Struct {} @ {}: matching {:?}", |             "Struct {} @ {}: matching {:?}", | ||||||
|             stringify!(#name), start_depth, event, |             stringify!(#name), start_depth, event, | ||||||
|           ); |           ); | ||||||
|           match event { |           match event { | ||||||
|             ::xml::reader::XmlEvent::StartElement{ref name, ref attributes, ..} => { |             ::yaserde::xml::reader::XmlEvent::StartElement{ref name, ref attributes, ..} => { | ||||||
|               if depth == 0 && name.local_name == #root { |               if depth == 0 && name.local_name == #root { | ||||||
|                 // Consume root element. We must do this first. In the case it shares a name with a child element, we don't
 |                 // Consume root element. We must do this first. In the case it shares a name with a child element, we don't
 | ||||||
|                 // want to prematurely match the child element below.
 |                 // want to prematurely match the child element below.
 | ||||||
| @ -398,7 +398,7 @@ pub fn parse( | |||||||
|               } |               } | ||||||
|               depth += 1; |               depth += 1; | ||||||
|             } |             } | ||||||
|             ::xml::reader::XmlEvent::EndElement { ref name } => { |             ::yaserde::xml::reader::XmlEvent::EndElement { ref name } => { | ||||||
|               if name.local_name == named_element { |               if name.local_name == named_element { | ||||||
|                 #write_unused |                 #write_unused | ||||||
|                 break; |                 break; | ||||||
| @ -407,12 +407,12 @@ pub fn parse( | |||||||
|               #write_unused |               #write_unused | ||||||
|               depth -= 1; |               depth -= 1; | ||||||
|             } |             } | ||||||
|             ::xml::reader::XmlEvent::EndDocument => { |             ::yaserde::xml::reader::XmlEvent::EndDocument => { | ||||||
|               if #flatten { |               if #flatten { | ||||||
|                 break; |                 break; | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|             ::xml::reader::XmlEvent::Characters(ref text_content) => { |             ::yaserde::xml::reader::XmlEvent::Characters(ref text_content) => { | ||||||
|               #set_text |               #set_text | ||||||
|               let event = reader.next_event()?; |               let event = reader.next_event()?; | ||||||
|               #write_unused |               #write_unused | ||||||
| @ -425,7 +425,7 @@ pub fn parse( | |||||||
| 
 | 
 | ||||||
|         #visit_unused |         #visit_unused | ||||||
| 
 | 
 | ||||||
|         ::log::debug!("Struct {} @ {}: success", stringify!(#name), start_depth); |         ::yaserde::log::debug!("Struct {} @ {}: success", stringify!(#name), start_depth); | ||||||
|         ::std::result::Result::Ok(#name{#struct_builder}) |         ::std::result::Result::Ok(#name{#struct_builder}) | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @ -456,7 +456,7 @@ fn build_call_visitor( | |||||||
|       #namespaces_matching |       #namespaces_matching | ||||||
| 
 | 
 | ||||||
|       let result = reader.read_inner_value::<#field_type, _>(|reader| { |       let result = reader.read_inner_value::<#field_type, _>(|reader| { | ||||||
|         if let ::std::result::Result::Ok(::xml::reader::XmlEvent::Characters(s)) = reader.peek() { |         if let ::std::result::Result::Ok(::yaserde::xml::reader::XmlEvent::Characters(s)) = reader.peek() { | ||||||
|           let val = visitor.#visitor(&s); |           let val = visitor.#visitor(&s); | ||||||
|           let _event = reader.next_event()?; |           let _event = reader.next_event()?; | ||||||
|           val |           val | ||||||
| @ -504,7 +504,7 @@ fn build_code_for_unused_xml_events( | |||||||
|   ( |   ( | ||||||
|     Some(quote! { |     Some(quote! { | ||||||
|       let mut buf = ::std::vec![]; |       let mut buf = ::std::vec![]; | ||||||
|       let mut writer = ::std::option::Option::Some(::xml::writer::EventWriter::new(&mut buf)); |       let mut writer = ::std::option::Option::Some(::yaserde::xml::writer::EventWriter::new(&mut buf)); | ||||||
|     }), |     }), | ||||||
|     Some(quote! { |     Some(quote! { | ||||||
|       if let ::std::option::Option::Some(ref mut w) = writer { |       if let ::std::option::Option::Some(ref mut w) = writer { | ||||||
|  | |||||||
| @ -16,14 +16,14 @@ pub fn enclose_characters(label: &Option<Ident>, label_name: String) -> TokenStr | |||||||
| 
 | 
 | ||||||
| fn enclose_xml_event(label_name: String, yaserde_format: TokenStream) -> TokenStream { | fn enclose_xml_event(label_name: String, yaserde_format: TokenStream) -> TokenStream { | ||||||
|   quote! { |   quote! { | ||||||
|     let start_event = ::xml::writer::XmlEvent::start_element(#label_name); |     let start_event = ::yaserde::xml::writer::XmlEvent::start_element(#label_name); | ||||||
|     writer.write(start_event).map_err(|e| e.to_string())?; |     writer.write(start_event).map_err(|e| e.to_string())?; | ||||||
| 
 | 
 | ||||||
|     let yaserde_value = #yaserde_format; |     let yaserde_value = #yaserde_format; | ||||||
|     let data_event = ::xml::writer::XmlEvent::characters(&yaserde_value); |     let data_event = ::yaserde::xml::writer::XmlEvent::characters(&yaserde_value); | ||||||
|     writer.write(data_event).map_err(|e| e.to_string())?; |     writer.write(data_event).map_err(|e| e.to_string())?; | ||||||
| 
 | 
 | ||||||
|     let end_event = ::xml::writer::XmlEvent::end_element(); |     let end_event = ::yaserde::xml::writer::XmlEvent::end_element(); | ||||||
|     writer.write(end_event).map_err(|e| e.to_string())?; |     writer.write(end_event).map_err(|e| e.to_string())?; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -42,7 +42,7 @@ fn inner_enum_inspector( | |||||||
|       match variant.fields { |       match variant.fields { | ||||||
|         Fields::Unit => Some(quote! { |         Fields::Unit => Some(quote! { | ||||||
|           &#name::#label => { |           &#name::#label => { | ||||||
|             let data_event = ::xml::writer::XmlEvent::characters(#label_name); |             let data_event = ::yaserde::xml::writer::XmlEvent::characters(#label_name); | ||||||
|             writer.write(data_event).map_err(|e| e.to_string())?; |             writer.write(data_event).map_err(|e| e.to_string())?; | ||||||
|           } |           } | ||||||
|         }), |         }), | ||||||
| @ -57,7 +57,7 @@ fn inner_enum_inspector( | |||||||
| 
 | 
 | ||||||
|               if field.is_text_content() { |               if field.is_text_content() { | ||||||
|                 return Some(quote!( |                 return Some(quote!( | ||||||
|                   let data_event = ::xml::writer::XmlEvent::characters(&self.#field_label); |                   let data_event = ::yaserde::xml::writer::XmlEvent::characters(&self.#field_label); | ||||||
|                   writer.write(data_event).map_err(|e| e.to_string())?; |                   writer.write(data_event).map_err(|e| e.to_string())?; | ||||||
|                 )); |                 )); | ||||||
|               } |               } | ||||||
| @ -81,14 +81,14 @@ fn inner_enum_inspector( | |||||||
|                     match self { |                     match self { | ||||||
|                       &#name::#label { ref #field_label, .. } => { |                       &#name::#label { ref #field_label, .. } => { | ||||||
|                         let struct_start_event = |                         let struct_start_event = | ||||||
|                           ::xml::writer::XmlEvent::start_element(#field_label_name); |                           ::yaserde::xml::writer::XmlEvent::start_element(#field_label_name); | ||||||
|                         writer.write(struct_start_event).map_err(|e| e.to_string())?; |                         writer.write(struct_start_event).map_err(|e| e.to_string())?; | ||||||
| 
 | 
 | ||||||
|                         let string_value = #field_label.to_string(); |                         let string_value = #field_label.to_string(); | ||||||
|                         let data_event = ::xml::writer::XmlEvent::characters(&string_value); |                         let data_event = ::yaserde::xml::writer::XmlEvent::characters(&string_value); | ||||||
|                         writer.write(data_event).map_err(|e| e.to_string())?; |                         writer.write(data_event).map_err(|e| e.to_string())?; | ||||||
| 
 | 
 | ||||||
|                         let struct_end_event = ::xml::writer::XmlEvent::end_element(); |                         let struct_end_event = ::yaserde::xml::writer::XmlEvent::end_element(); | ||||||
|                         writer.write(struct_end_event).map_err(|e| e.to_string())?; |                         writer.write(struct_end_event).map_err(|e| e.to_string())?; | ||||||
|                       }, |                       }, | ||||||
|                       _ => {}, |                       _ => {}, | ||||||
| @ -142,24 +142,24 @@ fn inner_enum_inspector( | |||||||
|             .map(|field| { |             .map(|field| { | ||||||
|               let write_element = |action: &TokenStream| { |               let write_element = |action: &TokenStream| { | ||||||
|                 quote! { |                 quote! { | ||||||
|                   let struct_start_event = ::xml::writer::XmlEvent::start_element(#label_name); |                   let struct_start_event = ::yaserde::xml::writer::XmlEvent::start_element(#label_name); | ||||||
|                   writer.write(struct_start_event).map_err(|e| e.to_string())?; |                   writer.write(struct_start_event).map_err(|e| e.to_string())?; | ||||||
| 
 | 
 | ||||||
|                   #action |                   #action | ||||||
| 
 | 
 | ||||||
|                   let struct_end_event = ::xml::writer::XmlEvent::end_element(); |                   let struct_end_event = ::yaserde::xml::writer::XmlEvent::end_element(); | ||||||
|                   writer.write(struct_end_event).map_err(|e| e.to_string())?; |                   writer.write(struct_end_event).map_err(|e| e.to_string())?; | ||||||
|                 } |                 } | ||||||
|               }; |               }; | ||||||
| 
 | 
 | ||||||
|               let write_string_chars = quote! { |               let write_string_chars = quote! { | ||||||
|                 let data_event = ::xml::writer::XmlEvent::characters(item); |                 let data_event = ::yaserde::xml::writer::XmlEvent::characters(item); | ||||||
|                 writer.write(data_event).map_err(|e| e.to_string())?; |                 writer.write(data_event).map_err(|e| e.to_string())?; | ||||||
|               }; |               }; | ||||||
| 
 | 
 | ||||||
|               let write_simple_type = write_element("e! { |               let write_simple_type = write_element("e! { | ||||||
|                 let s = item.to_string(); |                 let s = item.to_string(); | ||||||
|                 let data_event = ::xml::writer::XmlEvent::characters(&s); |                 let data_event = ::yaserde::xml::writer::XmlEvent::characters(&s); | ||||||
|                 writer.write(data_event).map_err(|e| e.to_string())?; |                 writer.write(data_event).map_err(|e| e.to_string())?; | ||||||
|               }); |               }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -125,7 +125,7 @@ pub fn serialize( | |||||||
|             quote!( |             quote!( | ||||||
|               let (attributes, namespace) = self.#label.serialize_attributes( |               let (attributes, namespace) = self.#label.serialize_attributes( | ||||||
|                 ::std::vec![], |                 ::std::vec![], | ||||||
|                 ::xml::namespace::Namespace::empty(), |                 ::yaserde::xml::namespace::Namespace::empty(), | ||||||
|               )?; |               )?; | ||||||
|               child_attributes_namespace.extend(&namespace); |               child_attributes_namespace.extend(&namespace); | ||||||
|               child_attributes.extend(attributes); |               child_attributes.extend(attributes); | ||||||
| @ -148,11 +148,11 @@ pub fn serialize( | |||||||
|         return match field.get_type() { |         return match field.get_type() { | ||||||
|           Field::FieldOption { .. } => Some(quote!( |           Field::FieldOption { .. } => Some(quote!( | ||||||
|             let s = self.#label.as_deref().unwrap_or_default(); |             let s = self.#label.as_deref().unwrap_or_default(); | ||||||
|             let data_event = ::xml::writer::XmlEvent::characters(s); |             let data_event = ::yaserde::xml::writer::XmlEvent::characters(s); | ||||||
|             writer.write(data_event).map_err(|e| e.to_string())?; |             writer.write(data_event).map_err(|e| e.to_string())?; | ||||||
|           )), |           )), | ||||||
|           _ => Some(quote!( |           _ => Some(quote!( | ||||||
|             let data_event = ::xml::writer::XmlEvent::characters(&self.#label); |             let data_event = ::yaserde::xml::writer::XmlEvent::characters(&self.#label); | ||||||
|             writer.write(data_event).map_err(|e| e.to_string())?; |             writer.write(data_event).map_err(|e| e.to_string())?; | ||||||
|           )), |           )), | ||||||
|         }; |         }; | ||||||
|  | |||||||
| @ -25,21 +25,21 @@ pub fn implement_serializer( | |||||||
| 
 | 
 | ||||||
|         if !#flatten && !skip { |         if !#flatten && !skip { | ||||||
|           let mut child_attributes = ::std::vec![]; |           let mut child_attributes = ::std::vec![]; | ||||||
|           let mut child_attributes_namespace = ::xml::namespace::Namespace::empty(); |           let mut child_attributes_namespace = ::yaserde::xml::namespace::Namespace::empty(); | ||||||
| 
 | 
 | ||||||
|           let yaserde_label = writer.get_start_event_name().unwrap_or_else(|| #root.to_string()); |           let yaserde_label = writer.get_start_event_name().unwrap_or_else(|| #root.to_string()); | ||||||
|           let struct_start_event = |           let struct_start_event = | ||||||
|             ::xml::writer::XmlEvent::start_element(yaserde_label.as_ref()) #namespaces_definition; |             ::yaserde::xml::writer::XmlEvent::start_element(yaserde_label.as_ref()) #namespaces_definition; | ||||||
|           #append_attributes |           #append_attributes | ||||||
| 
 | 
 | ||||||
|           let event: ::xml::writer::events::XmlEvent = struct_start_event.into(); |           let event: ::yaserde::xml::writer::events::XmlEvent = struct_start_event.into(); | ||||||
| 
 | 
 | ||||||
|           if let ::xml::writer::events::XmlEvent::StartElement { |           if let ::yaserde::xml::writer::events::XmlEvent::StartElement { | ||||||
|             name, |             name, | ||||||
|             attributes, |             attributes, | ||||||
|             namespace, |             namespace, | ||||||
|           } = event { |           } = event { | ||||||
|             let mut attributes: ::std::vec::Vec<::xml::attribute::OwnedAttribute> = |             let mut attributes: ::std::vec::Vec<::yaserde::xml::attribute::OwnedAttribute> = | ||||||
|               attributes.into_owned().to_vec().iter().map(|k| k.to_owned()).collect(); |               attributes.into_owned().to_vec().iter().map(|k| k.to_owned()).collect(); | ||||||
|             attributes.extend(child_attributes); |             attributes.extend(child_attributes); | ||||||
| 
 | 
 | ||||||
| @ -48,7 +48,7 @@ pub fn implement_serializer( | |||||||
|             let mut all_namespaces = namespace.into_owned(); |             let mut all_namespaces = namespace.into_owned(); | ||||||
|             all_namespaces.extend(&child_attributes_namespace); |             all_namespaces.extend(&child_attributes_namespace); | ||||||
| 
 | 
 | ||||||
|             writer.write(::xml::writer::events::XmlEvent::StartElement{ |             writer.write(::yaserde::xml::writer::events::XmlEvent::StartElement{ | ||||||
|               name, |               name, | ||||||
|               attributes: ::std::borrow::Cow::Owned(all_attributes), |               attributes: ::std::borrow::Cow::Owned(all_attributes), | ||||||
|               namespace: ::std::borrow::Cow::Owned(all_namespaces) |               namespace: ::std::borrow::Cow::Owned(all_namespaces) | ||||||
| @ -61,7 +61,7 @@ pub fn implement_serializer( | |||||||
|         #inner_inspector |         #inner_inspector | ||||||
| 
 | 
 | ||||||
|         if !#flatten && !skip { |         if !#flatten && !skip { | ||||||
|           let struct_end_event = ::xml::writer::XmlEvent::end_element(); |           let struct_end_event = ::yaserde::xml::writer::XmlEvent::end_element(); | ||||||
|           writer.write(struct_end_event).map_err(|e| e.to_string())?; |           writer.write(struct_end_event).map_err(|e| e.to_string())?; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -70,27 +70,27 @@ pub fn implement_serializer( | |||||||
| 
 | 
 | ||||||
|       fn serialize_attributes( |       fn serialize_attributes( | ||||||
|         &self, |         &self, | ||||||
|         mut source_attributes: ::std::vec::Vec<::xml::attribute::OwnedAttribute>, |         mut source_attributes: ::std::vec::Vec<::yaserde::xml::attribute::OwnedAttribute>, | ||||||
|         mut source_namespace: ::xml::namespace::Namespace, |         mut source_namespace: ::yaserde::xml::namespace::Namespace, | ||||||
|       ) -> ::std::result::Result< |       ) -> ::std::result::Result< | ||||||
|         (::std::vec::Vec<::xml::attribute::OwnedAttribute>, ::xml::namespace::Namespace), |         (::std::vec::Vec<::yaserde::xml::attribute::OwnedAttribute>, ::yaserde::xml::namespace::Namespace), | ||||||
|         ::std::string::String |         ::std::string::String | ||||||
|       > { |       > { | ||||||
|         let mut child_attributes = ::std::vec::Vec::<::xml::attribute::OwnedAttribute>::new(); |         let mut child_attributes = ::std::vec::Vec::<::yaserde::xml::attribute::OwnedAttribute>::new(); | ||||||
|         let mut child_attributes_namespace = ::xml::namespace::Namespace::empty(); |         let mut child_attributes_namespace = ::yaserde::xml::namespace::Namespace::empty(); | ||||||
| 
 | 
 | ||||||
|         let struct_start_event = |         let struct_start_event = | ||||||
|           ::xml::writer::XmlEvent::start_element("temporary_element_to_generate_attributes") |           ::yaserde::xml::writer::XmlEvent::start_element("temporary_element_to_generate_attributes") | ||||||
|           #namespaces_definition; |           #namespaces_definition; | ||||||
| 
 | 
 | ||||||
|         #append_attributes |         #append_attributes | ||||||
|         let event: ::xml::writer::events::XmlEvent = struct_start_event.into(); |         let event: ::yaserde::xml::writer::events::XmlEvent = struct_start_event.into(); | ||||||
| 
 | 
 | ||||||
|         if let ::xml::writer::events::XmlEvent::StartElement { attributes, namespace, .. } = event { |         if let ::yaserde::xml::writer::events::XmlEvent::StartElement { attributes, namespace, .. } = event { | ||||||
|           source_namespace.extend(&namespace.into_owned()); |           source_namespace.extend(&namespace.into_owned()); | ||||||
|           source_namespace.extend(&child_attributes_namespace); |           source_namespace.extend(&child_attributes_namespace); | ||||||
| 
 | 
 | ||||||
|           let a: ::std::vec::Vec<::xml::attribute::OwnedAttribute> = |           let a: ::std::vec::Vec<::yaserde::xml::attribute::OwnedAttribute> = | ||||||
|             attributes.into_owned().to_vec().iter().map(|k| k.to_owned()).collect(); |             attributes.into_owned().to_vec().iter().map(|k| k.to_owned()).collect(); | ||||||
|           source_attributes.extend(a); |           source_attributes.extend(a); | ||||||
|           source_attributes.extend(child_attributes); |           source_attributes.extend(child_attributes); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user