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'}], oneOf: [convert(fund, type.value), {type: 'null'}],
}; };
case 'number': case 'number':
return { const {repr} = type;
type: type.repr === 'f32' || type.repr === 'f64' ? 'number' : 'integer',
}; return repr === 'f32' || repr === 'f64' ? {type: 'number'}
: repr === 'i32' || repr === 'i64' ? {type: 'integer'}
: {type: 'integer', minimum: 0};
case 'string': case 'string':
return { return {
type: 'string', type: 'string',

View File

@ -7,9 +7,11 @@
"a": {"type": "integer"}, "a": {"type": "integer"},
"b": {"type": "integer"}, "b": {"type": "integer"},
"c": {"type": "number"}, "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": { "pragmas::Interface": {
"type": "object", "type": "object",
@ -18,9 +20,11 @@
"b": {"type": "integer"}, "b": {"type": "integer"},
"c": {"type": "number"}, "c": {"type": "number"},
"d": {"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": { "pragmas::Class": {
"type": "object", "type": "object",
@ -28,9 +32,11 @@
"a": {"type": "integer"}, "a": {"type": "integer"},
"b": {"type": "integer"}, "b": {"type": "integer"},
"c": {"type": "number"}, "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, c: number,
// @repr {f64} // @repr {f64}
d: number, d: number,
// @repr {u32}
e: number,
// @repr {u64}
f: number,
}; };
interface Interface { interface Interface {
@ -18,9 +22,13 @@ interface Interface {
c: number; c: number;
// @repr {f64} // @repr {f64}
d: number; d: number;
// @repr {u32}
e: number;
// @repr {u64}
f: number;
// Some comment. // Some comment.
e: string; g: string;
} }
class Class { class Class {
@ -32,6 +40,10 @@ class Class {
c: number; c: number;
// @repr {f64} // @repr {f64}
d: number; d: number;
// @repr {u32}
e: number;
// @repr {u64}
f: number;
} }
export {Type, Interface, Class}; export {Type, Interface, Class};

View File

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