Spaces:
Sleeping
Sleeping
; | |
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; | |
}; | |