diff options
Diffstat (limited to 'validator_derive/src/quoting.rs')
| -rw-r--r-- | validator_derive/src/quoting.rs | 21 | 
1 files changed, 17 insertions, 4 deletions
| diff --git a/validator_derive/src/quoting.rs b/validator_derive/src/quoting.rs index f94d8fc..fa97623 100644 --- a/validator_derive/src/quoting.rs +++ b/validator_derive/src/quoting.rs @@ -3,7 +3,7 @@ use syn;  use validator::Validator;  use asserts::{COW_TYPE, NUMBER_TYPES}; -use lit::option_u64_to_tokens; +use lit::{option_f64_to_tokens, option_u64_to_tokens};  use validation::{FieldValidation, SchemaValidation};  /// Pass around all the information needed for creating a validation @@ -183,12 +183,25 @@ pub fn quote_range_validation(      let quoted_ident = field_quoter.quote_validator_param();      if let Validator::Range { min, max } = validation.validator { +        // Can't interpolate None +        let min_tokens = option_f64_to_tokens(min); +        let max_tokens = option_f64_to_tokens(max); + +        let min_err_param_quoted = if let Some(v) = min { +            quote!(err.add_param(::std::borrow::Cow::from("min"), &#v);) +        } else { +            quote!() +        }; +        let max_err_param_quoted = if let Some(v) = max { +            quote!(err.add_param(::std::borrow::Cow::from("max"), &#v);) +        } else { +            quote!() +        }; +          let quoted_error = quote_error(&validation); -        let min_err_param_quoted = quote!(err.add_param(::std::borrow::Cow::from("min"), &#min);); -        let max_err_param_quoted = quote!(err.add_param(::std::borrow::Cow::from("max"), &#max););          let quoted = quote!(              if !::validator::validate_range( -                ::validator::Validator::Range {min: #min, max: #max}, +                ::validator::Validator::Range {min: #min_tokens, max: #max_tokens},                  #quoted_ident as f64              ) {                  #quoted_error | 
