architect_schemars/json_schema_impls/
semver.rs1use crate::r#gen::SchemaGenerator;
2use crate::schema::*;
3use crate::JsonSchema;
4use semver::Version;
5use std::borrow::Cow;
6
7impl JsonSchema for Version {
8 no_ref_schema!();
9
10 fn schema_name() -> String {
11 "Version".to_owned()
12 }
13
14 fn schema_id() -> Cow<'static, str> {
15 Cow::Borrowed("semver::Version")
16 }
17
18 fn json_schema(_: &mut SchemaGenerator) -> Schema {
19 SchemaObject {
20 instance_type: Some(InstanceType::String.into()),
21 string: Some(Box::new(StringValidation {
22 pattern: Some(r"^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$".to_owned()),
24 ..Default::default()
25 })),
26 ..Default::default()
27 }
28 .into()
29 }
30}