Set format property on integers

This commit is contained in:
Graham Esau 2019-09-08 14:20:57 +01:00
parent a236d7aee0
commit 6cf9343657
10 changed files with 52 additions and 32 deletions

View file

@ -5,6 +5,12 @@ use serde_json::json;
macro_rules! simple_impl {
($type:tt => $instance_type:ident) => {
simple_impl!($type => $instance_type, None);
};
($type:tt => $instance_type:ident, $format: literal) => {
simple_impl!($type => $instance_type, Some($format.to_owned()));
};
($type:tt => $instance_type:ident, $($format:tt)+) => {
impl JsonSchema for $type {
no_ref_schema!();
@ -15,6 +21,7 @@ macro_rules! simple_impl {
fn json_schema(_: &mut SchemaGenerator) -> Result {
Ok(SchemaObject {
instance_type: Some(InstanceType::$instance_type.into()),
format: $($format)+,
..Default::default()
}
.into())
@ -26,20 +33,20 @@ macro_rules! simple_impl {
simple_impl!(str => String);
simple_impl!(String => String);
simple_impl!(bool => Boolean);
simple_impl!(f32 => Number);
simple_impl!(f64 => Number);
simple_impl!(i8 => Integer);
simple_impl!(i16 => Integer);
simple_impl!(i32 => Integer);
simple_impl!(i64 => Integer);
simple_impl!(i128 => Integer);
simple_impl!(isize => Integer);
simple_impl!(u8 => Integer);
simple_impl!(u16 => Integer);
simple_impl!(u32 => Integer);
simple_impl!(u64 => Integer);
simple_impl!(u128 => Integer);
simple_impl!(usize => Integer);
simple_impl!(f32 => Number, "float");
simple_impl!(f64 => Number, "double");
simple_impl!(i8 => Integer, "int8");
simple_impl!(i16 => Integer, "int16");
simple_impl!(i32 => Integer, "int32");
simple_impl!(i64 => Integer, "int64");
simple_impl!(i128 => Integer, "int128");
simple_impl!(isize => Integer, "int");
simple_impl!(u8 => Integer, "uint8");
simple_impl!(u16 => Integer, "uint16");
simple_impl!(u32 => Integer, "uint32");
simple_impl!(u64 => Integer, "uint64");
simple_impl!(u128 => Integer, "uint128");
simple_impl!(usize => Integer, "uint");
simple_impl!(() => Null);
impl JsonSchema for char {

View file

@ -32,7 +32,8 @@
"type": "boolean"
},
"foo": {
"type": "integer"
"type": "integer",
"format": "int32"
}
},
"required": [
@ -52,7 +53,8 @@
"type": "array",
"items": [
{
"type": "integer"
"type": "integer",
"format": "int32"
},
{
"type": "boolean"

View file

@ -36,17 +36,18 @@
{
"type": "object",
"properties": {
"bar": {
"type": "boolean"
},
"foo": {
"type": "integer",
"format": "int32"
},
"typeProperty": {
"type": "string",
"enum": [
"Struct"
]
},
"bar": {
"type": "boolean"
},
"foo": {
"type": "integer"
}
},
"required": [

View file

@ -18,7 +18,8 @@
"type": "boolean"
},
"foo": {
"type": "integer"
"type": "integer",
"format": "int32"
}
},
"required": [
@ -30,7 +31,8 @@
"type": "array",
"items": [
{
"type": "integer"
"type": "integer",
"format": "int32"
},
{
"type": "boolean"

View file

@ -4,13 +4,16 @@
"type": "object",
"properties": {
"camelCase": {
"type": "integer"
"type": "integer",
"format": "int32"
},
"new_name_1": {
"type": "integer"
"type": "integer",
"format": "int32"
},
"new_name_2": {
"type": "integer"
"type": "integer",
"format": "int32"
}
},
"required": [

View file

@ -7,7 +7,8 @@
"$ref": "#/definitions/another-new-name"
},
"t": {
"type": "integer"
"type": "integer",
"format": "int32"
},
"u": {
"type": "null"

View file

@ -7,7 +7,8 @@
"$ref": "#/definitions/MySimpleStruct"
},
"t": {
"type": "integer"
"type": "integer",
"format": "int32"
},
"u": {
"type": "null"

View file

@ -1,5 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Newtype",
"type": "integer"
"type": "integer",
"format": "int32"
}

View file

@ -7,7 +7,8 @@
"type": "boolean"
},
"foo": {
"type": "integer"
"type": "integer",
"format": "int32"
}
},
"required": [

View file

@ -4,7 +4,8 @@
"type": "array",
"items": [
{
"type": "integer"
"type": "integer",
"format": "int32"
},
{
"type": "boolean"