diff options
| author | Andras Mocsary | 2019-09-06 16:30:54 +0200 |
|---|---|---|
| committer | Andras Mocsary | 2019-10-14 15:40:21 +0200 |
| commit | ac3810f68d2dd86c17a57593959506bd1b99cab5 (patch) | |
| tree | 95c93dc52f8741212f073396304e6341ad2cd743 /validator_derive/src/quoting.rs | |
| parent | 87cf7cdac24dd0d4ea83a8a88640da95ae7ac93a (diff) | |
| download | validator-ac3810f68d2dd86c17a57593959506bd1b99cab5.tar.bz2 | |
Add utf-8 non-control chars validator
Diffstat (limited to 'validator_derive/src/quoting.rs')
| -rw-r--r-- | validator_derive/src/quoting.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/validator_derive/src/quoting.rs b/validator_derive/src/quoting.rs index b94962c..6bfef0c 100644 --- a/validator_derive/src/quoting.rs +++ b/validator_derive/src/quoting.rs @@ -258,6 +258,26 @@ pub fn quote_phone_validation( field_quoter.wrap_if_option(quoted) } +#[cfg(feature = "unic")] +pub fn quote_non_control_character_validation( + field_quoter: &FieldQuoter, + validation: &FieldValidation, +) -> proc_macro2::TokenStream { + let field_name = &field_quoter.name; + let validator_param = field_quoter.quote_validator_param(); + + let quoted_error = quote_error(&validation); + let quoted = quote!( + if !::validator::validate_non_control_character(#validator_param) { + #quoted_error + err.add_param(::std::borrow::Cow::from("value"), &#validator_param); + errors.add(#field_name, err); + } + ); + + field_quoter.wrap_if_option(quoted) +} + pub fn quote_url_validation( field_quoter: &FieldQuoter, validation: &FieldValidation, @@ -440,6 +460,10 @@ pub fn quote_field_validation( #[cfg(feature = "phone")] Validator::Phone => validations.push(quote_phone_validation(&field_quoter, validation)), Validator::Nested => nested_validations.push(quote_nested_validation(&field_quoter)), + #[cfg(feature = "unic")] + Validator::NonControlCharacter => { + validations.push(quote_non_control_character_validation(&field_quoter, validation)) + } } } |
