37 lines
		
	
	
		
			959 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			959 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'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;
 | 
						|
};
 |