--- /dev/null
+{{# def.definitions }}
+{{# def.errors }}
+{{# def.setupKeyword }}
+
+{{
+ var $key = 'key' + $lvl
+ , $idx = 'idx' + $lvl
+ , $matched = 'patternMatched' + $lvl
+ , $dataProperties = 'dataProperties' + $lvl
+ , $closingBraces = ''
+ , $ownProperties = it.opts.ownProperties;
+}}
+
+var {{=$valid}} = true;
+{{? $ownProperties }}
+ var {{=$dataProperties}} = undefined;
+{{?}}
+
+{{~ $schema:$pProperty }}
+ var {{=$matched}} = false;
+ {{# def.iterateProperties }}
+ {{=$matched}} = {{= it.usePattern($pProperty) }}.test({{=$key}});
+ if ({{=$matched}}) break;
+ }
+
+ {{ var $missingPattern = it.util.escapeQuotes($pProperty); }}
+ if (!{{=$matched}}) {
+ {{=$valid}} = false;
+ {{# def.addError:'patternRequired' }}
+ } {{# def.elseIfValid }}
+{{~}}
+
+{{= $closingBraces }}