parse bool as defined in xs:boolean
This commit is contained in:
parent
dc558a73e4
commit
fc5625a5e4
@ -85,6 +85,19 @@ pub fn parse(
|
|||||||
let visitor_label = field.get_visitor_ident(None);
|
let visitor_label = field.get_visitor_ident(None);
|
||||||
let field_type: TokenStream = simple_type.into();
|
let field_type: TokenStream = simple_type.into();
|
||||||
|
|
||||||
|
let map_if_bool =
|
||||||
|
if format!("{}", field_type) == "bool" {
|
||||||
|
quote!(
|
||||||
|
match v {
|
||||||
|
"1" => "true",
|
||||||
|
"0" => "false",
|
||||||
|
_ => v,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
quote!(v)
|
||||||
|
};
|
||||||
|
|
||||||
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;
|
||||||
@ -92,7 +105,7 @@ pub fn parse(
|
|||||||
type Value = #field_type;
|
type Value = #field_type;
|
||||||
|
|
||||||
fn #visitor(self, v: &str) -> Result<Self::Value, std::string::String> {
|
fn #visitor(self, v: &str) -> Result<Self::Value, std::string::String> {
|
||||||
Ok(#field_type::from_str(v).unwrap())
|
Ok(#field_type::from_str(#map_if_bool).unwrap())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user