123456789101112131415161718192021222324252627282930313233343536373839 |
- 'use strict';
- module.exports = function defFunc(ajv) {
- defFunc.definition = {
- type: 'number',
- macro: function (schema, parentSchema) {
- var min = schema[0]
- , max = schema[1]
- , exclusive = parentSchema.exclusiveRange;
- validateRangeSchema(min, max, exclusive);
- return {
- minimum: min,
- exclusiveMinimum: exclusive,
- maximum: max,
- exclusiveMaximum: exclusive
- };
- },
- metaSchema: {
- type: 'array',
- minItems: 2,
- maxItems: 2,
- items: { type: 'number' }
- }
- };
- ajv.addKeyword('range', defFunc.definition);
- ajv.addKeyword('exclusiveRange');
- return ajv;
- function validateRangeSchema(min, max, exclusive) {
- if (exclusive !== undefined && typeof exclusive != 'boolean')
- throw new Error('Invalid schema for exclusiveRange keyword, should be boolean');
- if (min > max || (exclusive && min == max))
- throw new Error('There are no numbers in range');
- }
- };
|