Add JSON Schema support (#3046)

## Summary

This PR adds JSON Schema support. The setup mirrors Ruff's own.
This commit is contained in:
Charlie Marsh 2024-04-17 13:24:41 -04:00 committed by GitHub
parent 7c5b13c412
commit 7fb2bf816f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
31 changed files with 818 additions and 26 deletions

View file

@ -52,3 +52,24 @@ impl std::fmt::Display for ExcludeNewer {
self.0.fmt(f)
}
}
#[cfg(feature = "schemars")]
impl schemars::JsonSchema for ExcludeNewer {
fn schema_name() -> String {
"ExcludeNewer".to_string()
}
fn json_schema(_gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
schemars::schema::SchemaObject {
instance_type: Some(schemars::schema::InstanceType::String.into()),
string: Some(Box::new(schemars::schema::StringValidation {
pattern: Some(
r"^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(Z|[+-]\d{2}:\d{2}))?$".to_string(),
),
..schemars::schema::StringValidation::default()
})),
..Default::default()
}
.into()
}
}