aboutsummaryrefslogtreecommitdiffstats
path: root/validator_derive/src/quoting.rs
diff options
context:
space:
mode:
authorValerian Saliou2017-10-09 18:36:03 -0700
committerValerian Saliou2017-11-07 07:59:58 -0500
commit304ff212e20cd10e2f4bc99a54385db461a3a27d (patch)
tree430f08a7fe7da65d8f152171512e1b9724cf7f07 /validator_derive/src/quoting.rs
parent4d7138e040cd5faaf84448a75b64f3ff0e4673e5 (diff)
downloadvalidator-304ff212e20cd10e2f4bc99a54385db461a3a27d.tar.bz2
Ability to validate an international phone number
Signed-off-by: Valerian Saliou <valerian@valeriansaliou.name> Derives for the ‘phone’ validator (still unsure about it) Signed-off-by: Valerian Saliou <valerian@valeriansaliou.name> Fix review Merge + Add missing documented ‘credit_cards’ feature Signed-off-by: Valerian Saliou <valerian@valeriansaliou.name> Fix Signed-off-by: Valerian Saliou <valerian@valeriansaliou.name> Fix Signed-off-by: Valerian Saliou <valerian@valeriansaliou.name> Merge Signed-off-by: Valerian Saliou <valerian@valeriansaliou.name> ‘credit_cards’ feature is no longer needed as per #33 Signed-off-by: Valerian Saliou <valerian@valeriansaliou.name>
Diffstat (limited to 'validator_derive/src/quoting.rs')
-rw-r--r--validator_derive/src/quoting.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/validator_derive/src/quoting.rs b/validator_derive/src/quoting.rs
index 69353e9..24c50d8 100644
--- a/validator_derive/src/quoting.rs
+++ b/validator_derive/src/quoting.rs
@@ -158,6 +158,22 @@ pub fn quote_range_validation(field_quoter: &FieldQuoter, validation: &FieldVali
unreachable!()
}
+pub fn quote_phone_validation(field_quoter: &FieldQuoter, validation: &FieldValidation) -> quote::Tokens {
+ 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_phone(#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) -> quote::Tokens {
let field_name = &field_quoter.name;
let validator_param = field_quoter.quote_validator_param();
@@ -293,6 +309,7 @@ pub fn quote_field_validation(field_quoter: &FieldQuoter, validation: &FieldVali
Validator::Custom(_) => quote_custom_validation(&field_quoter, validation),
Validator::Contains(_) => quote_contains_validation(&field_quoter, validation),
Validator::Regex(_) => quote_regex_validation(&field_quoter, validation),
+ Validator::Phone => quote_phone_validation(&field_quoter, validation),
}
}