Fix formatting

This commit is contained in:
Dmitry Samoylov 2019-12-05 14:29:20 +07:00
parent ab03d32cfb
commit 5a81a5add8
2 changed files with 49 additions and 31 deletions

View File

@ -2,7 +2,7 @@ use attribute::*;
use de::build_default_value::build_default_value; use de::build_default_value::build_default_value;
use field_type::*; use field_type::*;
use proc_macro2::{Span, TokenStream}; use proc_macro2::{Span, TokenStream};
use quote::{TokenStreamExt, ToTokens}; use quote::{ToTokens, TokenStreamExt};
use std::collections::BTreeMap; use std::collections::BTreeMap;
use syn::DataStruct; use syn::DataStruct;
use syn::Ident; use syn::Ident;
@ -249,7 +249,11 @@ pub fn parse(
build_declare_visitor(&quote! {f64}, &quote! {visit_f64}, &visitor_label) build_declare_visitor(&quote! {f64}, &quote! {visit_f64}, &visitor_label)
} }
Some(FieldType::FieldTypeStruct { struct_name }) => { Some(FieldType::FieldTypeStruct { struct_name }) => {
let struct_id : String = struct_name.segments.iter().map(|s| s.ident.to_string()).collect(); let struct_id: String = struct_name
.segments
.iter()
.map(|s| s.ident.to_string())
.collect();
let struct_ident = Ident::new( let struct_ident = Ident::new(
&format!("__Visitor_{}_{}", label_name, struct_id), &format!("__Visitor_{}_{}", label_name, struct_id),
Span::call_site(), Span::call_site(),
@ -309,7 +313,10 @@ pub fn parse(
build_declare_visitor(&quote! {f64}, &quote! {visit_f64}, &visitor_label) build_declare_visitor(&quote! {f64}, &quote! {visit_f64}, &visitor_label)
} }
Some(&FieldType::FieldTypeStruct { ref struct_name }) => { Some(&FieldType::FieldTypeStruct { ref struct_name }) => {
let struct_ident = Ident::new(&format!("{}", struct_name.into_token_stream()), Span::call_site()); let struct_ident = Ident::new(
&format!("{}", struct_name.into_token_stream()),
Span::call_site(),
);
Some(quote! { Some(quote! {
#[allow(non_snake_case, non_camel_case_types)] #[allow(non_snake_case, non_camel_case_types)]
struct #visitor_label; struct #visitor_label;
@ -363,7 +370,10 @@ pub fn parse(
build_declare_visitor(&quote! {f64}, &quote! {visit_f64}, &visitor_label) build_declare_visitor(&quote! {f64}, &quote! {visit_f64}, &visitor_label)
} }
Some(&FieldType::FieldTypeStruct { ref struct_name }) => { Some(&FieldType::FieldTypeStruct { ref struct_name }) => {
let struct_ident = Ident::new(&format!("{}", struct_name.into_token_stream()), Span::call_site()); let struct_ident = Ident::new(
&format!("{}", struct_name.into_token_stream()),
Span::call_site(),
);
Some(quote! { Some(quote! {
#[allow(non_snake_case, non_camel_case_types)] #[allow(non_snake_case, non_camel_case_types)]
struct #visitor_label; struct #visitor_label;
@ -685,7 +695,10 @@ pub fn parse(
) )
} }
Some(&FieldType::FieldTypeStruct { ref struct_name }) => { Some(&FieldType::FieldTypeStruct { ref struct_name }) => {
let struct_ident = Ident::new(&format!("{}", struct_name.into_token_stream()), Span::call_site()); let struct_ident = Ident::new(
&format!("{}", struct_name.into_token_stream()),
Span::call_site(),
);
Some(quote! { Some(quote! {
#label_name => { #label_name => {
reader.set_map_value(); reader.set_map_value();
@ -840,7 +853,10 @@ pub fn parse(
) )
} }
Some(&FieldType::FieldTypeStruct { ref struct_name }) => { Some(&FieldType::FieldTypeStruct { ref struct_name }) => {
let struct_ident = Ident::new(&format!("{}", struct_name.into_token_stream()), Span::call_site()); let struct_ident = Ident::new(
&format!("{}", struct_name.into_token_stream()),
Span::call_site(),
);
Some(quote! { Some(quote! {
#label_name => { #label_name => {
reader.set_map_value(); reader.set_map_value();
@ -1064,7 +1080,11 @@ pub fn parse(
} }
Some(FieldType::FieldTypeStruct { struct_name }) => { Some(FieldType::FieldTypeStruct { struct_name }) => {
let struct_ident = Ident::new( let struct_ident = Ident::new(
&format!("__Visitor_{}_{}", label_name, struct_name.into_token_stream()), &format!(
"__Visitor_{}_{}",
label_name,
struct_name.into_token_stream()
),
Span::call_site(), Span::call_site(),
); );

View File

@ -23,30 +23,28 @@ pub enum FieldType {
impl FieldType { impl FieldType {
fn from_ident(path: &syn::Path) -> Option<FieldType> { fn from_ident(path: &syn::Path) -> Option<FieldType> {
match path.segments.last() { match path.segments.last() {
Some(t) => { Some(t) => match t.ident.to_string().as_str() {
match t.ident.to_string().as_str() { "String" => Some(FieldType::FieldTypeString),
"String" => Some(FieldType::FieldTypeString), "bool" => Some(FieldType::FieldTypeBool),
"bool" => Some(FieldType::FieldTypeBool), "i8" => Some(FieldType::FieldTypeI8),
"i8" => Some(FieldType::FieldTypeI8), "u8" => Some(FieldType::FieldTypeU8),
"u8" => Some(FieldType::FieldTypeU8), "i16" => Some(FieldType::FieldTypeI16),
"i16" => Some(FieldType::FieldTypeI16), "u16" => Some(FieldType::FieldTypeU16),
"u16" => Some(FieldType::FieldTypeU16), "i32" => Some(FieldType::FieldTypeI32),
"i32" => Some(FieldType::FieldTypeI32), "u32" => Some(FieldType::FieldTypeU32),
"u32" => Some(FieldType::FieldTypeU32), "i64" => Some(FieldType::FieldTypeI64),
"i64" => Some(FieldType::FieldTypeI64), "u64" => Some(FieldType::FieldTypeU64),
"u64" => Some(FieldType::FieldTypeU64), "f32" => Some(FieldType::FieldTypeF32),
"f32" => Some(FieldType::FieldTypeF32), "f64" => Some(FieldType::FieldTypeF64),
"f64" => Some(FieldType::FieldTypeF64), "Option" => get_sub_type(t).map(|data_type| FieldType::FieldTypeOption {
"Option" => get_sub_type(t).map(|data_type| FieldType::FieldTypeOption { data_type: Box::new(FieldType::from_ident(&syn::Path::from(data_type)).unwrap()),
data_type: Box::new(FieldType::from_ident(&syn::Path::from(data_type)).unwrap()), }),
}), "Vec" => get_sub_type(t).map(|data_type| FieldType::FieldTypeVec {
"Vec" => get_sub_type(t).map(|data_type| FieldType::FieldTypeVec { data_type: Box::new(FieldType::from_ident(&syn::Path::from(data_type)).unwrap()),
data_type: Box::new(FieldType::from_ident(&syn::Path::from(data_type)).unwrap()), }),
}), _ => Some(FieldType::FieldTypeStruct {
_ => Some(FieldType::FieldTypeStruct { struct_name: path.clone(),
struct_name: path.clone(), }),
}),
}
}, },
_ => None, _ => None,
} }