From 751f4715a8eb9955a6c2e93f899a990eb1287355 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Arnaud Date: Fri, 8 May 2020 15:04:51 +0200 Subject: [PATCH 1/3] bump to 0.3.17 --- yaserde/Cargo.toml | 2 +- yaserde_derive/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/yaserde/Cargo.toml b/yaserde/Cargo.toml index 87c2d5c..0ce3939 100644 --- a/yaserde/Cargo.toml +++ b/yaserde/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yaserde" -version = "0.3.16" +version = "0.3.17" authors = ["Marc-Antoine Arnaud "] description = "Serialization and deserialization library" keywords = ["Serialization", "Deserialization", "XML"] diff --git a/yaserde_derive/Cargo.toml b/yaserde_derive/Cargo.toml index 586f252..9435237 100644 --- a/yaserde_derive/Cargo.toml +++ b/yaserde_derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yaserde_derive" -version = "0.3.16" +version = "0.3.17" authors = ["Marc-Antoine Arnaud "] description = "Serialization and deserialization macros" keywords = ["Serialization", "Deserialization"] From 0d2058ddb48fc026a2ba384ada7700e308b70c45 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Arnaud Date: Wed, 20 May 2020 16:58:55 +0200 Subject: [PATCH 2/3] use heck to force camel case format on Visitor ident issue #77 --- yaserde/tests/deserializer.rs | 33 ++++++++++++++++++++++++++ yaserde_derive/Cargo.toml | 1 + yaserde_derive/src/common/field.rs | 3 ++- yaserde_derive/src/de/expand_struct.rs | 3 ++- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/yaserde/tests/deserializer.rs b/yaserde/tests/deserializer.rs index 08bc993..947516b 100644 --- a/yaserde/tests/deserializer.rs +++ b/yaserde/tests/deserializer.rs @@ -46,6 +46,39 @@ fn de_basic() { ); } +#[test] +fn de_dash_param() { + #[derive(YaDeserialize, PartialEq, Debug)] + #[yaserde(root = "book")] + pub struct Book { + #[yaserde(rename = "author-release")] + author: String, + title: String, + } + + let content = + "Antoine de Saint-ExupéryLittle prince"; + convert_and_validate!( + content, + Book, + Book { + author: String::from("Antoine de Saint-Exupéry"), + title: String::from("Little prince"), + } + ); + + let content = + "Little princeAntoine de Saint-Exupéry"; + convert_and_validate!( + content, + Book, + Book { + author: String::from("Antoine de Saint-Exupéry"), + title: String::from("Little prince"), + } + ); +} + #[test] fn de_multiple_segments() { mod other_mod { diff --git a/yaserde_derive/Cargo.toml b/yaserde_derive/Cargo.toml index 9435237..2a7a1b7 100644 --- a/yaserde_derive/Cargo.toml +++ b/yaserde_derive/Cargo.toml @@ -12,6 +12,7 @@ readme = "../README.md" edition = "2018" [dependencies] +heck = "0.3.1" syn = { version = "~1.0", features = ["visit", "extra-traits"] } proc-macro2 = "~1.0" quote = "~1.0" diff --git a/yaserde_derive/src/common/field.rs b/yaserde_derive/src/common/field.rs index 2fc2746..c844bc5 100644 --- a/yaserde_derive/src/common/field.rs +++ b/yaserde_derive/src/common/field.rs @@ -1,4 +1,5 @@ use crate::common::attribute::YaSerdeAttribute; +use heck::CamelCase; use proc_macro2::Span; use proc_macro2::{Ident, TokenStream}; use std::fmt; @@ -84,7 +85,7 @@ impl YaSerdeField { ); Ident::new( - &format!("__Visitor_{}_{}", label.replace(".", "_"), struct_id), + &format!("__Visitor_{}_{}", label.replace(".", "_").to_camel_case(), struct_id), self.get_span(), ) } diff --git a/yaserde_derive/src/de/expand_struct.rs b/yaserde_derive/src/de/expand_struct.rs index bd9c718..a19d19a 100644 --- a/yaserde_derive/src/de/expand_struct.rs +++ b/yaserde_derive/src/de/expand_struct.rs @@ -1,5 +1,6 @@ use crate::common::{Field, YaSerdeAttribute, YaSerdeField}; use crate::de::build_default_value::build_default_value; +use heck::CamelCase; use proc_macro2::{Span, TokenStream}; use syn::{DataStruct, Ident}; @@ -447,7 +448,7 @@ fn build_visitor_ident(label: &str, span: Span, struct_name: Option<&syn::Path>) ); Ident::new( - &format!("__Visitor_{}_{}", label.replace(".", "_"), struct_id), + &format!("__Visitor_{}_{}", label.replace(".", "_").to_camel_case(), struct_id), span, ) } From 10f2be69be70258b555c256f4301b1f033b0bdfb Mon Sep 17 00:00:00 2001 From: Marc-Antoine Arnaud Date: Wed, 20 May 2020 17:38:31 +0200 Subject: [PATCH 3/3] format code --- yaserde_derive/src/common/field.rs | 6 +++++- yaserde_derive/src/de/expand_struct.rs | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/yaserde_derive/src/common/field.rs b/yaserde_derive/src/common/field.rs index c844bc5..1c9125e 100644 --- a/yaserde_derive/src/common/field.rs +++ b/yaserde_derive/src/common/field.rs @@ -85,7 +85,11 @@ impl YaSerdeField { ); Ident::new( - &format!("__Visitor_{}_{}", label.replace(".", "_").to_camel_case(), struct_id), + &format!( + "__Visitor_{}_{}", + label.replace(".", "_").to_camel_case(), + struct_id + ), self.get_span(), ) } diff --git a/yaserde_derive/src/de/expand_struct.rs b/yaserde_derive/src/de/expand_struct.rs index a19d19a..9dfe8f2 100644 --- a/yaserde_derive/src/de/expand_struct.rs +++ b/yaserde_derive/src/de/expand_struct.rs @@ -448,7 +448,11 @@ fn build_visitor_ident(label: &str, span: Span, struct_name: Option<&syn::Path>) ); Ident::new( - &format!("__Visitor_{}_{}", label.replace(".", "_").to_camel_case(), struct_id), + &format!( + "__Visitor_{}_{}", + label.replace(".", "_").to_camel_case(), + struct_id + ), span, ) }