4 var $dataLvl = it.dataLevel;
5 var $schema = it.schema[$keyword];
6 var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
7 var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
8 var $breakOnError = !it.opts.allErrors;
11 var $data = 'data' + ($dataLvl || '');
12 var $valid = 'valid' + $lvl;
13 var $errs = 'errs__' + $lvl;
18 {{## def.setCompositeRule:
20 var $wasComposite = it.compositeRule;
21 it.compositeRule = $it.compositeRule = true;
26 {{## def.resetCompositeRule:
27 {{ it.compositeRule = $it.compositeRule = $wasComposite; }}
31 {{## def.setupNextLevel:
33 var $it = it.util.copy(it);
34 var $closingBraces = '';
36 var $nextValid = 'valid' + $it.level;
44 {{ $closingBraces += '}'; }}
49 {{## def.ifResultValid:
51 if ({{=$nextValid}}) {
52 {{ $closingBraces += '}'; }}
59 {{ $closingBraces += '}'; }}
65 {{## def.nonEmptySchema:_schema:
66 (it.opts.strictKeywords
67 ? typeof _schema == 'object' && Object.keys(_schema).length > 0
68 : it.util.schemaHasRules(_schema, it.RULES.all))
73 {{? it.opts.unicode === false }}
76 ucs2length({{=$data}})
81 {{## def.willOptimize:
82 it.util.varOccurences($code, $nextData) < 2
86 {{## def.generateSubschemaCode:
88 var $code = it.validate($it);
89 $it.baseId = $currentBaseId;
94 {{## def.insertSubschemaCode:
95 {{= it.validate($it) }}
96 {{ $it.baseId = $currentBaseId; }}
100 {{## def._optimizeValidate:
101 it.util.varReplace($code, $nextData, $passData)
105 {{## def.optimizeValidate:
106 {{? {{# def.willOptimize}} }}
107 {{= {{# def._optimizeValidate }} }}
109 var {{=$nextData}} = {{=$passData}};
117 var $isData = it.opts.$data && $schema && $schema.$data
121 var schema{{=$lvl}} = {{= it.util.getData($schema.$data, $dataLvl, it.dataPathArr) }};
122 {{ $schemaValue = 'schema' + $lvl; }}
124 {{ $schemaValue = $schema; }}
129 {{## def.$dataNotType:_type:
130 {{?$isData}} ({{=$schemaValue}} !== undefined && typeof {{=$schemaValue}} != _type) || {{?}}
134 {{## def.check$dataIsArray:
135 if (schema{{=$lvl}} === undefined) {{=$valid}} = true;
136 else if (!Array.isArray(schema{{=$lvl}})) {{=$valid}} = false;
141 {{## def.numberKeyword:
142 {{? !($isData || typeof $schema == 'number') }}
143 {{ throw new Error($keyword + ' must be number'); }}
148 {{## def.beginDefOut:
150 var $$outStack = $$outStack || [];
151 $$outStack.push(out);
157 {{## def.storeDefOut:_variable:
160 out = $$outStack.pop();
165 {{## def.dataPath:(dataPath || ''){{? it.errorPath != '""'}} + {{= it.errorPath }}{{?}}#}}
167 {{## def.setParentData:
169 var $parentData = $dataLvl ? 'data' + (($dataLvl-1)||'') : 'parentData'
170 , $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
174 {{## def.passParentData:
175 {{# def.setParentData }}
177 , {{= $parentDataProperty }}
181 {{## def.iterateProperties:
182 {{? $ownProperties }}
183 {{=$dataProperties}} = {{=$dataProperties}} || Object.keys({{=$data}});
184 for (var {{=$idx}}=0; {{=$idx}}<{{=$dataProperties}}.length; {{=$idx}}++) {
185 var {{=$key}} = {{=$dataProperties}}[{{=$idx}}];
187 for (var {{=$key}} in {{=$data}}) {
192 {{## def.noPropertyInData:
193 {{=$useData}} === undefined
194 {{? $ownProperties }}
195 || !{{# def.isOwnProperty }}
200 {{## def.isOwnProperty:
201 Object.prototype.hasOwnProperty.call({{=$data}}, '{{=it.util.escapeQuotes($propertyKey)}}')