aboutsummaryrefslogtreecommitdiffstats
path: root/validator_derive/src/quoting.rs
diff options
context:
space:
mode:
Diffstat (limited to 'validator_derive/src/quoting.rs')
-rw-r--r--validator_derive/src/quoting.rs31
1 files changed, 28 insertions, 3 deletions
diff --git a/validator_derive/src/quoting.rs b/validator_derive/src/quoting.rs
index b94962c..dc466ac 100644
--- a/validator_derive/src/quoting.rs
+++ b/validator_derive/src/quoting.rs
@@ -1,10 +1,11 @@
use proc_macro2::{self, Span};
+use quote::quote;
use syn;
use validator::Validator;
-use asserts::{COW_TYPE, NUMBER_TYPES};
-use lit::{option_f64_to_tokens, option_u64_to_tokens};
-use validation::{FieldValidation, SchemaValidation};
+use crate::asserts::{COW_TYPE, NUMBER_TYPES};
+use crate::lit::{option_f64_to_tokens, option_u64_to_tokens};
+use crate::validation::{FieldValidation, SchemaValidation};
/// Pass around all the information needed for creating a validation
#[derive(Debug)]
@@ -258,6 +259,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 +461,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))
+ }
}
}