Allow setting validation attributes via #[schemars(...)]
This commit is contained in:
parent
c013052f59
commit
7914593d89
17 changed files with 607 additions and 99 deletions
|
@ -165,10 +165,7 @@ impl Attrs {
|
|||
_ if ignore_errors => {}
|
||||
|
||||
Meta(meta_item) => {
|
||||
let is_known_serde_keyword = schemars_to_serde::SERDE_KEYWORDS
|
||||
.iter()
|
||||
.any(|k| meta_item.path().is_ident(k));
|
||||
if !is_known_serde_keyword {
|
||||
if !is_known_serde_or_validation_keyword(meta_item) {
|
||||
let path = meta_item
|
||||
.path()
|
||||
.into_token_stream()
|
||||
|
@ -176,16 +173,13 @@ impl Attrs {
|
|||
.replace(' ', "");
|
||||
errors.error_spanned_by(
|
||||
meta_item.path(),
|
||||
format!("unknown schemars container attribute `{}`", path),
|
||||
format!("unknown schemars attribute `{}`", path),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Lit(lit) => {
|
||||
errors.error_spanned_by(
|
||||
lit,
|
||||
"unexpected literal in schemars container attribute",
|
||||
);
|
||||
errors.error_spanned_by(lit, "unexpected literal in schemars attribute");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -193,6 +187,16 @@ impl Attrs {
|
|||
}
|
||||
}
|
||||
|
||||
fn is_known_serde_or_validation_keyword(meta: &syn::Meta) -> bool {
|
||||
let mut known_keywords = schemars_to_serde::SERDE_KEYWORDS
|
||||
.iter()
|
||||
.chain(validation::VALIDATION_KEYWORDS);
|
||||
meta.path()
|
||||
.get_ident()
|
||||
.map(|i| known_keywords.any(|k| i == k))
|
||||
.unwrap_or(false)
|
||||
}
|
||||
|
||||
fn get_meta_items(
|
||||
attr: &syn::Attribute,
|
||||
attr_type: &'static str,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue