Merge pull request #134 from ephraimkunz/clippy-warnings-and-build
Fix clippy warnings and build with heck 0.4
This commit is contained in:
commit
71432d1e9b
@ -474,10 +474,7 @@ fn struct_default_namespace_no_prefix() {
|
|||||||
init();
|
init();
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, YaDeserialize, YaSerialize)]
|
#[derive(Debug, PartialEq, YaDeserialize, YaSerialize)]
|
||||||
#[yaserde(
|
#[yaserde(rename = "book", namespace = "http://www.sample.com/ns/domain")]
|
||||||
rename = "book",
|
|
||||||
namespace = "http://www.sample.com/ns/domain"
|
|
||||||
)]
|
|
||||||
pub struct Book {
|
pub struct Book {
|
||||||
author: String,
|
author: String,
|
||||||
title: String,
|
title: String,
|
||||||
|
|||||||
@ -21,7 +21,7 @@ fn get_value(iter: &mut IntoIter) -> Option<String> {
|
|||||||
(iter.next(), iter.next())
|
(iter.next(), iter.next())
|
||||||
{
|
{
|
||||||
if operator.as_char() == '=' {
|
if operator.as_char() == '=' {
|
||||||
Some(value.to_string().replace("\"", ""))
|
Some(value.to_string().replace('"', ""))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@ -138,14 +138,13 @@ impl YaSerdeAttribute {
|
|||||||
let namespaces_matches: TokenStream = self
|
let namespaces_matches: TokenStream = self
|
||||||
.namespaces
|
.namespaces
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(prefix, namespace)| {
|
.filter_map(|(prefix, namespace)| {
|
||||||
if configured_prefix.eq(prefix) {
|
if configured_prefix.eq(prefix) {
|
||||||
Some(quote!(#namespace => {}))
|
Some(quote!(#namespace => {}))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
quote!(
|
quote!(
|
||||||
@ -316,7 +315,10 @@ fn parse_attributes_with_values() {
|
|||||||
let attrs = YaSerdeAttribute::parse(&attributes);
|
let attrs = YaSerdeAttribute::parse(&attributes);
|
||||||
|
|
||||||
let mut namespaces = BTreeMap::new();
|
let mut namespaces = BTreeMap::new();
|
||||||
namespaces.insert(Some("example".to_string()), "http://example.org".to_string());
|
namespaces.insert(
|
||||||
|
Some("example".to_string()),
|
||||||
|
"http://example.org".to_string(),
|
||||||
|
);
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
YaSerdeAttribute {
|
YaSerdeAttribute {
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
use crate::common::attribute::YaSerdeAttribute;
|
use crate::common::attribute::YaSerdeAttribute;
|
||||||
use heck::CamelCase;
|
use heck::ToUpperCamelCase;
|
||||||
use proc_macro2::Span;
|
use proc_macro2::Span;
|
||||||
use proc_macro2::{Ident, TokenStream};
|
use proc_macro2::{Ident, TokenStream};
|
||||||
use quote::{format_ident, quote};
|
use quote::{format_ident, quote};
|
||||||
@ -89,7 +89,7 @@ impl YaSerdeField {
|
|||||||
Ident::new(
|
Ident::new(
|
||||||
&format!(
|
&format!(
|
||||||
"__Visitor_{}_{}",
|
"__Visitor_{}_{}",
|
||||||
label.replace(".", "_").to_camel_case(),
|
label.replace('.', "_").to_upper_camel_case(),
|
||||||
struct_id
|
struct_id
|
||||||
),
|
),
|
||||||
self.get_span(),
|
self.get_span(),
|
||||||
@ -109,7 +109,7 @@ impl YaSerdeField {
|
|||||||
.attributes
|
.attributes
|
||||||
.default
|
.default
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|default| Ident::new(&default, self.get_span()))
|
.map(|default| Ident::new(default, self.get_span()))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_skip_serializing_if_function(&self) -> Option<Ident> {
|
pub fn get_skip_serializing_if_function(&self) -> Option<Ident> {
|
||||||
@ -117,7 +117,7 @@ impl YaSerdeField {
|
|||||||
.attributes
|
.attributes
|
||||||
.skip_serializing_if
|
.skip_serializing_if
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|skip_serializing_if| Ident::new(&skip_serializing_if, self.get_span()))
|
.map(|skip_serializing_if| Ident::new(skip_serializing_if, self.get_span()))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_namespace_matching(
|
pub fn get_namespace_matching(
|
||||||
|
|||||||
@ -19,8 +19,7 @@ pub fn parse(
|
|||||||
let match_to_enum: TokenStream = data_enum
|
let match_to_enum: TokenStream = data_enum
|
||||||
.variants
|
.variants
|
||||||
.iter()
|
.iter()
|
||||||
.map(|variant| parse_variant(variant, name))
|
.filter_map(|variant| parse_variant(variant, name))
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let flatten = root_attributes.flatten;
|
let flatten = root_attributes.flatten;
|
||||||
@ -218,7 +217,7 @@ fn build_unnamed_visitor_calls(
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|field| YaSerdeField::new(field.clone()))
|
.map(|field| YaSerdeField::new(field.clone()))
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(idx, field)| {
|
.filter_map(|(idx, field)| {
|
||||||
let visitor_label = Ident::new(&format!("__Visitor_{}", idx), field.get_span());
|
let visitor_label = Ident::new(&format!("__Visitor_{}", idx), field.get_span());
|
||||||
|
|
||||||
let call_simple_type_visitor = |simple_type: Field, action| {
|
let call_simple_type_visitor = |simple_type: Field, action| {
|
||||||
@ -302,6 +301,5 @@ fn build_unnamed_visitor_calls(
|
|||||||
simple_type => call_simple_type_visitor(simple_type, set_val),
|
simple_type => call_simple_type_visitor(simple_type, set_val),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
use crate::common::{Field, YaSerdeAttribute, YaSerdeField};
|
use crate::common::{Field, YaSerdeAttribute, YaSerdeField};
|
||||||
use crate::de::build_default_value::build_default_value;
|
use crate::de::build_default_value::build_default_value;
|
||||||
use heck::CamelCase;
|
use heck::ToUpperCamelCase;
|
||||||
use proc_macro2::{Span, TokenStream};
|
use proc_macro2::{Span, TokenStream};
|
||||||
use quote::quote;
|
use quote::quote;
|
||||||
use syn::{DataStruct, Ident};
|
use syn::{DataStruct, Ident};
|
||||||
@ -22,7 +22,7 @@ pub fn parse(
|
|||||||
.fields
|
.fields
|
||||||
.iter()
|
.iter()
|
||||||
.map(|field| YaSerdeField::new(field.clone()))
|
.map(|field| YaSerdeField::new(field.clone()))
|
||||||
.map(|field| match field.get_type() {
|
.filter_map(|field| match field.get_type() {
|
||||||
Field::FieldStruct { struct_name } => build_default_value(
|
Field::FieldStruct { struct_name } => build_default_value(
|
||||||
&field,
|
&field,
|
||||||
Some(quote!(#struct_name)),
|
Some(quote!(#struct_name)),
|
||||||
@ -57,14 +57,13 @@ pub fn parse(
|
|||||||
build_default_value(&field, Some(type_token), value_builder)
|
build_default_value(&field, Some(type_token), value_builder)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let field_visitors: TokenStream = data_struct
|
let field_visitors: TokenStream = data_struct
|
||||||
.fields
|
.fields
|
||||||
.iter()
|
.iter()
|
||||||
.map(|field| YaSerdeField::new(field.clone()))
|
.map(|field| YaSerdeField::new(field.clone()))
|
||||||
.map(|field| {
|
.filter_map(|field| {
|
||||||
let struct_visitor = |struct_name: syn::Path| {
|
let struct_visitor = |struct_name: syn::Path| {
|
||||||
let struct_id: String = struct_name
|
let struct_id: String = struct_name
|
||||||
.segments
|
.segments
|
||||||
@ -137,7 +136,6 @@ pub fn parse(
|
|||||||
simple_type => simple_type_visitor(simple_type),
|
simple_type => simple_type_visitor(simple_type),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let call_visitors: TokenStream = data_struct
|
let call_visitors: TokenStream = data_struct
|
||||||
@ -145,7 +143,7 @@ pub fn parse(
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|field| YaSerdeField::new(field.clone()))
|
.map(|field| YaSerdeField::new(field.clone()))
|
||||||
.filter(|field| !field.is_attribute() || !field.is_flatten())
|
.filter(|field| !field.is_attribute() || !field.is_flatten())
|
||||||
.map(|field| {
|
.filter_map(|field| {
|
||||||
let value_label = field.get_value_label();
|
let value_label = field.get_value_label();
|
||||||
let label_name = field.renamed_label_without_namespace();
|
let label_name = field.renamed_label_without_namespace();
|
||||||
|
|
||||||
@ -175,7 +173,7 @@ pub fn parse(
|
|||||||
&field_visitor,
|
&field_visitor,
|
||||||
&action,
|
&action,
|
||||||
&field,
|
&field,
|
||||||
&root_attributes,
|
root_attributes,
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -194,7 +192,6 @@ pub fn parse(
|
|||||||
simple_type => visit_simple(simple_type, quote! { = value }),
|
simple_type => visit_simple(simple_type, quote! { = value }),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let call_flatten_visitors: TokenStream = data_struct
|
let call_flatten_visitors: TokenStream = data_struct
|
||||||
@ -202,7 +199,7 @@ pub fn parse(
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|field| YaSerdeField::new(field.clone()))
|
.map(|field| YaSerdeField::new(field.clone()))
|
||||||
.filter(|field| !field.is_attribute() && field.is_flatten())
|
.filter(|field| !field.is_attribute() && field.is_flatten())
|
||||||
.map(|field| {
|
.filter_map(|field| {
|
||||||
let value_label = field.get_value_label();
|
let value_label = field.get_value_label();
|
||||||
|
|
||||||
match field.get_type() {
|
match field.get_type() {
|
||||||
@ -218,7 +215,6 @@ pub fn parse(
|
|||||||
field_type => unimplemented!(r#""flatten" is not implemented for {:?}"#, field_type),
|
field_type => unimplemented!(r#""flatten" is not implemented for {:?}"#, field_type),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let attributes_loading: TokenStream = data_struct
|
let attributes_loading: TokenStream = data_struct
|
||||||
@ -226,7 +222,7 @@ pub fn parse(
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|field| YaSerdeField::new(field.clone()))
|
.map(|field| YaSerdeField::new(field.clone()))
|
||||||
.filter(|field| field.is_attribute())
|
.filter(|field| field.is_attribute())
|
||||||
.map(|field| {
|
.filter_map(|field| {
|
||||||
let label = field.get_value_label();
|
let label = field.get_value_label();
|
||||||
let label_name = field.renamed_label_without_namespace();
|
let label_name = field.renamed_label_without_namespace();
|
||||||
let visitor_label = build_visitor_ident(&label_name, field.get_span(), None);
|
let visitor_label = build_visitor_ident(&label_name, field.get_span(), None);
|
||||||
@ -285,14 +281,13 @@ pub fn parse(
|
|||||||
simple_type => visit_simple(simple_type, quote! { = value }),
|
simple_type => visit_simple(simple_type, quote! { = value }),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let set_text: TokenStream = data_struct
|
let set_text: TokenStream = data_struct
|
||||||
.fields
|
.fields
|
||||||
.iter()
|
.iter()
|
||||||
.map(|field| YaSerdeField::new(field.clone()))
|
.map(|field| YaSerdeField::new(field.clone()))
|
||||||
.map(|field| {
|
.filter_map(|field| {
|
||||||
let label = field.get_value_label();
|
let label = field.get_value_label();
|
||||||
|
|
||||||
let set_text = |action: &TokenStream| {
|
let set_text = |action: &TokenStream| {
|
||||||
@ -318,7 +313,6 @@ pub fn parse(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let struct_builder: TokenStream = data_struct
|
let struct_builder: TokenStream = data_struct
|
||||||
@ -489,7 +483,7 @@ fn build_visitor_ident(label: &str, span: Span, struct_name: Option<&syn::Path>)
|
|||||||
Ident::new(
|
Ident::new(
|
||||||
&format!(
|
&format!(
|
||||||
"__Visitor_{}_{}",
|
"__Visitor_{}_{}",
|
||||||
label.replace(".", "_").to_camel_case(),
|
label.replace('.', "_").to_upper_camel_case(),
|
||||||
struct_id
|
struct_id
|
||||||
),
|
),
|
||||||
span,
|
span,
|
||||||
|
|||||||
@ -37,22 +37,22 @@ fn inner_enum_inspector(
|
|||||||
let variant_attrs = YaSerdeAttribute::parse(&variant.attrs);
|
let variant_attrs = YaSerdeAttribute::parse(&variant.attrs);
|
||||||
|
|
||||||
let label = &variant.ident;
|
let label = &variant.ident;
|
||||||
let label_name = build_label_name(&label, &variant_attrs, &root_attributes.default_namespace);
|
let label_name = build_label_name(label, &variant_attrs, &root_attributes.default_namespace);
|
||||||
|
|
||||||
match variant.fields {
|
match variant.fields {
|
||||||
Fields::Unit => Some(quote! {
|
Fields::Unit => quote! {
|
||||||
&#name::#label => {
|
&#name::#label => {
|
||||||
let data_event = ::yaserde::__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())?;
|
||||||
}
|
}
|
||||||
}),
|
},
|
||||||
Fields::Named(ref fields) => {
|
Fields::Named(ref fields) => {
|
||||||
let enum_fields: TokenStream = fields
|
let enum_fields: TokenStream = fields
|
||||||
.named
|
.named
|
||||||
.iter()
|
.iter()
|
||||||
.map(|field| YaSerdeField::new(field.clone()))
|
.map(|field| YaSerdeField::new(field.clone()))
|
||||||
.filter(|field| !field.is_attribute())
|
.filter(|field| !field.is_attribute())
|
||||||
.map(|field| {
|
.filter_map(|field| {
|
||||||
let field_label = field.label();
|
let field_label = field.label();
|
||||||
|
|
||||||
if field.is_text_content() {
|
if field.is_text_content() {
|
||||||
@ -124,14 +124,13 @@ fn inner_enum_inspector(
|
|||||||
Field::FieldOption { .. } => None,
|
Field::FieldOption { .. } => None,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
Some(quote! {
|
quote! {
|
||||||
&#name::#label{..} => {
|
&#name::#label{..} => {
|
||||||
#enum_fields
|
#enum_fields
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
Fields::Unnamed(ref fields) => {
|
Fields::Unnamed(ref fields) => {
|
||||||
let enum_fields: TokenStream = fields
|
let enum_fields: TokenStream = fields
|
||||||
@ -191,37 +190,35 @@ fn inner_enum_inspector(
|
|||||||
Field::FieldOption { data_type } => {
|
Field::FieldOption { data_type } => {
|
||||||
let write = write_sub_type(*data_type);
|
let write = write_sub_type(*data_type);
|
||||||
|
|
||||||
Some(match_field("e! {
|
match_field("e! {
|
||||||
if let ::std::option::Option::Some(item) = item {
|
if let ::std::option::Option::Some(item) = item {
|
||||||
#write
|
#write
|
||||||
}
|
}
|
||||||
}))
|
})
|
||||||
}
|
}
|
||||||
Field::FieldVec { data_type } => {
|
Field::FieldVec { data_type } => {
|
||||||
let write = write_sub_type(*data_type);
|
let write = write_sub_type(*data_type);
|
||||||
|
|
||||||
Some(match_field("e! {
|
match_field("e! {
|
||||||
for item in item {
|
for item in item {
|
||||||
#write
|
#write
|
||||||
}
|
}
|
||||||
}))
|
})
|
||||||
}
|
}
|
||||||
Field::FieldStruct { .. } => Some(write_element(&match_field(&serialize))),
|
Field::FieldStruct { .. } => write_element(&match_field(&serialize)),
|
||||||
Field::FieldString => Some(match_field(&write_element(&write_string_chars))),
|
Field::FieldString => match_field(&write_element(&write_string_chars)),
|
||||||
_simple_type => Some(match_field(&write_simple_type)),
|
_simple_type => match_field(&write_simple_type),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
Some(quote! {
|
quote! {
|
||||||
&#name::#label{..} => {
|
&#name::#label{..} => {
|
||||||
#enum_fields
|
#enum_fields
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -142,7 +142,7 @@ pub fn serialize(
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|field| YaSerdeField::new(field.clone()))
|
.map(|field| YaSerdeField::new(field.clone()))
|
||||||
.filter(|field| !field.is_attribute())
|
.filter(|field| !field.is_attribute())
|
||||||
.map(|field| {
|
.filter_map(|field| {
|
||||||
let label = field.label();
|
let label = field.label();
|
||||||
if field.is_text_content() {
|
if field.is_text_content() {
|
||||||
return match field.get_type() {
|
return match field.get_type() {
|
||||||
@ -324,7 +324,6 @@ pub fn serialize(
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
implement_serializer(
|
implement_serializer(
|
||||||
|
|||||||
@ -8,14 +8,14 @@ pub fn generate_namespaces_definition(attributes: &YaSerdeAttribute) -> TokenStr
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|(prefix, namespace)| {
|
.map(|(prefix, namespace)| {
|
||||||
if attributes.default_namespace.eq(prefix) {
|
if attributes.default_namespace.eq(prefix) {
|
||||||
return Some(quote!(
|
quote!(
|
||||||
.default_ns(#namespace)
|
.default_ns(#namespace)
|
||||||
));
|
)
|
||||||
}
|
} else {
|
||||||
Some(quote!(
|
quote!(
|
||||||
.ns(#prefix, #namespace)
|
.ns(#prefix, #namespace)
|
||||||
))
|
)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user