Add minimum = 0 to json-schema for u32 and u64

master
Paul Loyd 2017-12-18 20:46:31 +03:00
parent e284b1d2e4
commit a4bf88367e
4 changed files with 48 additions and 10 deletions

View File

@ -122,9 +122,11 @@ function convert(fund: Fund, type: ?Type): Schema {
oneOf: [convert(fund, type.value), {type: 'null'}],
};
case 'number':
return {
type: type.repr === 'f32' || type.repr === 'f64' ? 'number' : 'integer',
};
const {repr} = type;
return repr === 'f32' || repr === 'f64' ? {type: 'number'}
: repr === 'i32' || repr === 'i64' ? {type: 'integer'}
: {type: 'integer', minimum: 0};
case 'string':
return {
type: 'string',

View File

@ -7,9 +7,11 @@
"a": {"type": "integer"},
"b": {"type": "integer"},
"c": {"type": "number"},
"d": {"type": "number"}
"d": {"type": "number"},
"e": {"type": "integer", "minimum": 0},
"f": {"type": "integer", "minimum": 0}
},
"required": ["a", "b", "c", "d"]
"required": ["a", "b", "c", "d", "e", "f"]
},
"pragmas::Interface": {
"type": "object",
@ -18,9 +20,11 @@
"b": {"type": "integer"},
"c": {"type": "number"},
"d": {"type": "number"},
"e": {"type": "string"}
"e": {"type": "integer", "minimum": 0},
"f": {"type": "integer", "minimum": 0},
"g": {"type": "string"}
},
"required": ["a", "b", "c", "d", "e"]
"required": ["a", "b", "c", "d", "e", "f", "g"]
},
"pragmas::Class": {
"type": "object",
@ -28,9 +32,11 @@
"a": {"type": "integer"},
"b": {"type": "integer"},
"c": {"type": "number"},
"d": {"type": "number"}
"d": {"type": "number"},
"e": {"type": "integer", "minimum": 0},
"f": {"type": "integer", "minimum": 0}
},
"required": ["a", "b", "c", "d"]
"required": ["a", "b", "c", "d", "e", "f"]
}
}
}

View File

@ -7,6 +7,10 @@ type Type = {
c: number,
// @repr {f64}
d: number,
// @repr {u32}
e: number,
// @repr {u64}
f: number,
};
interface Interface {
@ -18,9 +22,13 @@ interface Interface {
c: number;
// @repr {f64}
d: number;
// @repr {u32}
e: number;
// @repr {u64}
f: number;
// Some comment.
e: string;
g: string;
}
class Class {
@ -32,6 +40,10 @@ class Class {
c: number;
// @repr {f64}
d: number;
// @repr {u32}
e: number;
// @repr {u64}
f: number;
}
export {Type, Interface, Class};

View File

@ -12,6 +12,12 @@
- name: d
value: {kind: number, repr: f64}
required: true
- name: e
value: {kind: number, repr: u32}
required: true
- name: f
value: {kind: number, repr: u64}
required: true
id: [pragmas, Type]
- kind: record
fields:
@ -28,6 +34,12 @@
value: {kind: number, repr: f64}
required: true
- name: e
value: {kind: number, repr: u32}
required: true
- name: f
value: {kind: number, repr: u64}
required: true
- name: g
value: {kind: string}
required: true
id: [pragmas, Interface]
@ -45,4 +57,10 @@
- name: d
value: {kind: number, repr: f64}
required: true
- name: e
value: {kind: number, repr: u32}
required: true
- name: f
value: {kind: number, repr: u64}
required: true
id: [pragmas, Class]