Skip to content

Commit a7113a2

Browse files
novafacingknickish
authored andcommitted
Add option to rename the nanoserde crate
1 parent 5217035 commit a7113a2

File tree

9 files changed

+316
-157
lines changed

9 files changed

+316
-157
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ For more examples take a look at [tests](/tests)
5656
| container attribute: `#[nserde(rename = "")]` | yes | yes | yes | no |
5757
| container attribute: `#[nserde(proxy = "")]` | yes | yes | no | no |
5858
| container attribute: `#[nserde(transparent)]` | yes | no | no | no |
59+
| container attribute: `#[nserde(crate = "")]` | yes | yes | yes | no |
5960

6061
## Crate features:
6162

derive/src/lib.rs

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,17 @@ mod parse;
3030
pub fn derive_ser_bin(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
3131
let input = parse::parse_data(input);
3232

33+
let crate_name = shared::attrs_crate(input.attributes()).unwrap_or("nanoserde");
34+
3335
if let Some(proxy) = shared::attrs_proxy(input.attributes()) {
34-
return derive_ser_bin_proxy(&proxy, input.name());
36+
return derive_ser_bin_proxy(&proxy, input.name(), crate_name);
3537
}
3638

3739
// ok we have an ident, its either a struct or a enum
3840
match &input {
39-
parse::Data::Struct(struct_) if struct_.named => derive_ser_bin_struct(struct_),
40-
parse::Data::Struct(struct_) => derive_ser_bin_struct_unnamed(struct_),
41-
parse::Data::Enum(enum_) => derive_ser_bin_enum(enum_),
41+
parse::Data::Struct(struct_) if struct_.named => derive_ser_bin_struct(struct_, crate_name),
42+
parse::Data::Struct(struct_) => derive_ser_bin_struct_unnamed(struct_, crate_name),
43+
parse::Data::Enum(enum_) => derive_ser_bin_enum(enum_, crate_name),
4244
_ => unimplemented!("Only structs and enums are supported"),
4345
}
4446
}
@@ -48,15 +50,17 @@ pub fn derive_ser_bin(input: proc_macro::TokenStream) -> proc_macro::TokenStream
4850
pub fn derive_de_bin(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
4951
let input = parse::parse_data(input);
5052

53+
let crate_name = shared::attrs_crate(input.attributes()).unwrap_or("nanoserde");
54+
5155
if let Some(proxy) = shared::attrs_proxy(input.attributes()) {
52-
return derive_de_bin_proxy(&proxy, input.name());
56+
return derive_de_bin_proxy(&proxy, input.name(), crate_name);
5357
}
5458

5559
// ok we have an ident, its either a struct or a enum
5660
match &input {
57-
parse::Data::Struct(struct_) if struct_.named => derive_de_bin_struct(struct_),
58-
parse::Data::Struct(struct_) => derive_de_bin_struct_unnamed(struct_),
59-
parse::Data::Enum(enum_) => derive_de_bin_enum(enum_),
61+
parse::Data::Struct(struct_) if struct_.named => derive_de_bin_struct(struct_, crate_name),
62+
parse::Data::Struct(struct_) => derive_de_bin_struct_unnamed(struct_, crate_name),
63+
parse::Data::Enum(enum_) => derive_de_bin_enum(enum_, crate_name),
6064

6165
_ => unimplemented!("Only structs and enums are supported"),
6266
}
@@ -67,15 +71,17 @@ pub fn derive_de_bin(input: proc_macro::TokenStream) -> proc_macro::TokenStream
6771
pub fn derive_ser_ron(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
6872
let input = parse::parse_data(input);
6973

74+
let crate_name = shared::attrs_crate(input.attributes()).unwrap_or("nanoserde");
75+
7076
if let Some(proxy) = shared::attrs_proxy(input.attributes()) {
71-
return derive_ser_ron_proxy(&proxy, input.name());
77+
return derive_ser_ron_proxy(&proxy, input.name(), crate_name);
7278
}
7379

7480
// ok we have an ident, its either a struct or a enum
7581
match &input {
76-
parse::Data::Struct(struct_) if struct_.named => derive_ser_ron_struct(struct_),
77-
parse::Data::Struct(struct_) => derive_ser_ron_struct_unnamed(struct_),
78-
parse::Data::Enum(enum_) => derive_ser_ron_enum(enum_),
82+
parse::Data::Struct(struct_) if struct_.named => derive_ser_ron_struct(struct_, crate_name),
83+
parse::Data::Struct(struct_) => derive_ser_ron_struct_unnamed(struct_, crate_name),
84+
parse::Data::Enum(enum_) => derive_ser_ron_enum(enum_, crate_name),
7985
_ => unimplemented!("Only structs and enums are supported"),
8086
}
8187
}
@@ -85,15 +91,17 @@ pub fn derive_ser_ron(input: proc_macro::TokenStream) -> proc_macro::TokenStream
8591
pub fn derive_de_ron(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
8692
let input = parse::parse_data(input);
8793

94+
let crate_name = shared::attrs_crate(input.attributes()).unwrap_or("nanoserde");
95+
8896
if let Some(proxy) = shared::attrs_proxy(input.attributes()) {
89-
return derive_de_ron_proxy(&proxy, input.name());
97+
return derive_de_ron_proxy(&proxy, input.name(), crate_name);
9098
}
9199

92100
// ok we have an ident, its either a struct or a enum
93101
match &input {
94-
parse::Data::Struct(struct_) if struct_.named => derive_de_ron_struct(struct_),
95-
parse::Data::Struct(struct_) => derive_de_ron_struct_unnamed(struct_),
96-
parse::Data::Enum(enum_) => derive_de_ron_enum(enum_),
102+
parse::Data::Struct(struct_) if struct_.named => derive_de_ron_struct(struct_, crate_name),
103+
parse::Data::Struct(struct_) => derive_de_ron_struct_unnamed(struct_, crate_name),
104+
parse::Data::Enum(enum_) => derive_de_ron_enum(enum_, crate_name),
97105
_ => unimplemented!("Only structs and enums are supported"),
98106
}
99107
}
@@ -103,15 +111,19 @@ pub fn derive_de_ron(input: proc_macro::TokenStream) -> proc_macro::TokenStream
103111
pub fn derive_ser_json(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
104112
let input = parse::parse_data(input);
105113

114+
let crate_name = shared::attrs_crate(input.attributes()).unwrap_or("nanoserde");
115+
106116
if let Some(proxy) = shared::attrs_proxy(input.attributes()) {
107-
return derive_ser_json_proxy(&proxy, input.name());
117+
return derive_ser_json_proxy(&proxy, input.name(), crate_name);
108118
}
109119

110120
// ok we have an ident, its either a struct or a enum
111121
match &input {
112-
parse::Data::Struct(struct_) if struct_.named => derive_ser_json_struct(struct_),
113-
parse::Data::Struct(struct_) => derive_ser_json_struct_unnamed(struct_),
114-
parse::Data::Enum(enum_) => derive_ser_json_enum(enum_),
122+
parse::Data::Struct(struct_) if struct_.named => {
123+
derive_ser_json_struct(struct_, crate_name)
124+
}
125+
parse::Data::Struct(struct_) => derive_ser_json_struct_unnamed(struct_, crate_name),
126+
parse::Data::Enum(enum_) => derive_ser_json_enum(enum_, crate_name),
115127
_ => unimplemented!(""),
116128
}
117129
}
@@ -121,15 +133,17 @@ pub fn derive_ser_json(input: proc_macro::TokenStream) -> proc_macro::TokenStrea
121133
pub fn derive_de_json(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
122134
let input = parse::parse_data(input);
123135

136+
let crate_name = shared::attrs_crate(input.attributes()).unwrap_or("nanoserde");
137+
124138
if let Some(proxy) = shared::attrs_proxy(input.attributes()) {
125-
return derive_de_json_proxy(&proxy, input.name());
139+
return derive_de_json_proxy(&proxy, input.name(), crate_name);
126140
}
127141

128142
// ok we have an ident, its either a struct or a enum
129143
match &input {
130-
parse::Data::Struct(struct_) if struct_.named => derive_de_json_struct(struct_),
131-
parse::Data::Struct(struct_) => derive_de_json_struct_unnamed(struct_),
132-
parse::Data::Enum(enum_) => derive_de_json_enum(enum_),
144+
parse::Data::Struct(struct_) if struct_.named => derive_de_json_struct(struct_, crate_name),
145+
parse::Data::Struct(struct_) => derive_de_json_struct_unnamed(struct_, crate_name),
146+
parse::Data::Enum(enum_) => derive_de_json_enum(enum_, crate_name),
133147
parse::Data::Union(_) => unimplemented!("Unions are not supported"),
134148
}
135149
}

0 commit comments

Comments
 (0)