| '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; |
| }; |