diff options
Diffstat (limited to 'validator_derive/src')
| -rw-r--r-- | validator_derive/src/lib.rs | 3 | ||||
| -rw-r--r-- | validator_derive/src/quoting.rs | 23 | 
2 files changed, 26 insertions, 0 deletions
| diff --git a/validator_derive/src/lib.rs b/validator_derive/src/lib.rs index 6f74202..6f91ae8 100644 --- a/validator_derive/src/lib.rs +++ b/validator_derive/src/lib.rs @@ -287,6 +287,9 @@ fn find_validators_for_field(                                              Validator::NonControlCharacter,                                          ));                                      } +                                    "required" => { +                                        validators.push(FieldValidation::new(Validator::Required)); +                                    }                                      _ => panic!("Unexpected validator: {:?}", name.get_ident()),                                  }                              } diff --git a/validator_derive/src/quoting.rs b/validator_derive/src/quoting.rs index dc466ac..4c81037 100644 --- a/validator_derive/src/quoting.rs +++ b/validator_derive/src/quoting.rs @@ -465,6 +465,9 @@ pub fn quote_field_validation(          Validator::NonControlCharacter => {              validations.push(quote_non_control_character_validation(&field_quoter, validation))          } +        Validator::Required => { +            validations.push(quote_required_validation(&field_quoter, validation)) +        }      }  } @@ -501,3 +504,23 @@ pub fn quote_schema_validation(validation: Option<SchemaValidation>) -> proc_mac          quote!()      }  } + +pub fn quote_required_validation( +    field_quoter: &FieldQuoter, +    validation: &FieldValidation, +) -> proc_macro2::TokenStream { +    let field_name = &field_quoter.name; +    let ident = &field_quoter.ident; +    let validator_param = quote!(&self.#ident); + +    let quoted_error = quote_error(&validation); +    let quoted = quote!( +        if !::validator::validate_required(#validator_param) { +            #quoted_error +            err.add_param(::std::borrow::Cow::from("value"), &#validator_param); +            errors.add(#field_name, err); +        } +    ); + +    quoted +} | 
