format code

This commit is contained in:
Marc-Antoine Arnaud
2018-11-05 17:17:27 +01:00
parent 96bac71db5
commit 69a54eebcf
20 changed files with 113 additions and 91 deletions

View File

@@ -1,6 +1,6 @@
use proc_macro2::TokenTree;
use proc_macro2::Delimiter;
use proc_macro2::token_stream::IntoIter;
use proc_macro2::Delimiter;
use proc_macro2::TokenTree;
use std::collections::BTreeMap;
use syn::Attribute;

View File

@@ -1,11 +1,11 @@
use attribute::*;
use field_type::*;
use proc_macro2::{Span, TokenStream};
use quote::TokenStreamExt;
use std::collections::BTreeMap;
use syn::DataEnum;
use syn::Fields;
use syn::Ident;
use syn::DataEnum;
use proc_macro2::{Span, TokenStream};
pub fn parse(
data_enum: &DataEnum,

View File

@@ -1,10 +1,10 @@
use attribute::*;
use field_type::*;
use proc_macro2::{Span, TokenStream};
use quote::TokenStreamExt;
use std::collections::BTreeMap;
use syn::Ident;
use syn::DataStruct;
use proc_macro2::{Span, TokenStream};
use syn::Ident;
pub fn parse(
data_struct: &DataStruct,

View File

@@ -36,20 +36,15 @@ impl FieldType {
"u64" => Some(FieldType::FieldTypeU64),
"f32" => Some(FieldType::FieldTypeF32),
"f64" => Some(FieldType::FieldTypeF64),
"Option" => get_sub_type(t).map(|data_type| {
FieldType::FieldTypeOption {
data_type: Box::new(FieldType::from_ident(&data_type).unwrap()),
}
"Option" => get_sub_type(t).map(|data_type| FieldType::FieldTypeOption {
data_type: Box::new(FieldType::from_ident(&data_type).unwrap()),
}),
"Vec" => get_sub_type(t).map(|data_type| {
FieldType::FieldTypeVec {
data_type: Box::new(FieldType::from_ident(&data_type).unwrap()),
}
"Vec" => get_sub_type(t).map(|data_type| FieldType::FieldTypeVec {
data_type: Box::new(FieldType::from_ident(&data_type).unwrap()),
}),
_struct_name => {
Some(FieldType::FieldTypeStruct {
_struct_name => Some(FieldType::FieldTypeStruct {
struct_name: t.ident.clone(),
})},
}),
}
}
}
@@ -62,11 +57,9 @@ pub fn get_field_type(field: &syn::Field) -> Option<FieldType> {
}
match path.path.segments.first() {
Some(Pair::End(t)) => FieldType::from_ident(t),
_ => {
None
},
_ => None,
}
},
}
_ => None,
}
}

View File

@@ -7,8 +7,8 @@ extern crate quote;
extern crate syn;
mod attribute;
mod field_type;
mod de;
mod field_type;
mod ser;
use proc_macro::TokenStream;

View File

@@ -1,11 +1,11 @@
use attribute::*;
use field_type::*;
use proc_macro2::{Span, TokenStream};
use quote::TokenStreamExt;
use std::collections::BTreeMap;
use syn::DataEnum;
use syn::Fields;
use syn::Ident;
use syn::DataEnum;
use proc_macro2::{Span, TokenStream};
pub fn serialize(
data_enum: &DataEnum,

View File

@@ -1,11 +1,11 @@
use attribute::*;
use field_type::*;
use proc_macro2::{Span, TokenStream};
use quote::TokenStreamExt;
use std::collections::BTreeMap;
use syn::Ident;
use syn::DataStruct;
use proc_macro2::{Span, TokenStream};
use std::string::ToString;
use syn::DataStruct;
use syn::Ident;
pub fn serialize(
data_struct: &DataStruct,
@@ -93,20 +93,18 @@ pub fn serialize(
struct_start_event
};
}),
Some(&FieldType::FieldTypeVec{..}) => {
Some(quote!{
for item in &self.#label {
let start_event = XmlEvent::start_element(#label_name);
let _ret = writer.write(start_event);
Some(&FieldType::FieldTypeVec { .. }) => Some(quote!{
for item in &self.#label {
let start_event = XmlEvent::start_element(#label_name);
let _ret = writer.write(start_event);
let data_event = XmlEvent::characters(item);
let _ret = writer.write(data_event);
let data_event = XmlEvent::characters(item);
let _ret = writer.write(data_event);
let end_event = XmlEvent::end_element();
let _ret = writer.write(end_event);
}
})
}
let end_event = XmlEvent::end_element();
let _ret = writer.write(end_event);
}
}),
_ => None,
}
}
@@ -247,7 +245,7 @@ pub fn serialize(
let _ret = writer.write(end_event);
}
}),
Some(&FieldType::FieldTypeVec{ .. }) => Some(quote!{
Some(&FieldType::FieldTypeVec { .. }) => Some(quote!{
if let Some(ref items) = &self.#label {
for item in items.iter() {
let start_event = XmlEvent::start_element(#label_name);
@@ -265,17 +263,15 @@ pub fn serialize(
_ => None,
}
}
Some(FieldType::FieldTypeStruct { .. }) => {
Some(quote!{
writer.set_skip_start_end(false);
match self.#label.serialize(writer) {
Ok(()) => {},
Err(msg) => {
return Err(msg);
},
};
})
},
Some(FieldType::FieldTypeStruct { .. }) => Some(quote!{
writer.set_skip_start_end(false);
match self.#label.serialize(writer) {
Ok(()) => {},
Err(msg) => {
return Err(msg);
},
};
}),
Some(FieldType::FieldTypeVec { data_type }) => {
let dt = Box::into_raw(data_type);
match unsafe { dt.as_ref() } {
@@ -344,7 +340,7 @@ pub fn serialize(
unimplemented!();
}
}
},
}
None => None,
}
})