123456789101112131415161718192021222324252627282930313233343536 |
- 'use strict';
-
- module.exports = function defFunc(ajv) {
- defFunc.definition = {
- type: 'string',
- inline: function (it, keyword, schema) {
- return getRegExp() + '.test(data' + (it.dataLevel || '') + ')';
-
- function getRegExp() {
- try {
- if (typeof schema == 'object')
- return new RegExp(schema.pattern, schema.flags);
-
- var rx = schema.match(/^\/(.*)\/([gimuy]*)$/);
- if (rx) return new RegExp(rx[1], rx[2]);
- throw new Error('cannot parse string into RegExp');
- } catch(e) {
- console.error('regular expression', schema, 'is invalid');
- throw e;
- }
- }
- },
- metaSchema: {
- type: ['string', 'object'],
- properties: {
- pattern: { type: 'string' },
- flags: { type: 'string' }
- },
- required: ['pattern'],
- additionalProperties: false
- }
- };
-
- ajv.addKeyword('regexp', defFunc.definition);
- return ajv;
- };
|