123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- {{## def.setupKeyword:
- {{
- var $lvl = it.level;
- var $dataLvl = it.dataLevel;
- var $schema = it.schema[$keyword];
- var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
- var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
- var $breakOnError = !it.opts.allErrors;
- var $errorKeyword;
- var $data = 'data' + ($dataLvl || '');
- var $valid = 'valid' + $lvl;
- var $errs = 'errs__' + $lvl;
- }}
- #}}
- {{## def.setCompositeRule:
- {{
- var $wasComposite = it.compositeRule;
- it.compositeRule = $it.compositeRule = true;
- }}
- #}}
- {{## def.resetCompositeRule:
- {{ it.compositeRule = $it.compositeRule = $wasComposite; }}
- #}}
- {{## def.setupNextLevel:
- {{
- var $it = it.util.copy(it);
- var $closingBraces = '';
- $it.level++;
- var $nextValid = 'valid' + $it.level;
- }}
- #}}
- {{## def.ifValid:
- {{? $breakOnError }}
- if ({{=$valid}}) {
- {{ $closingBraces += '}'; }}
- {{?}}
- #}}
- {{## def.ifResultValid:
- {{? $breakOnError }}
- if ({{=$nextValid}}) {
- {{ $closingBraces += '}'; }}
- {{?}}
- #}}
- {{## def.elseIfValid:
- {{? $breakOnError }}
- {{ $closingBraces += '}'; }}
- else {
- {{?}}
- #}}
- {{## def.nonEmptySchema:_schema:
- (it.opts.strictKeywords
- ? typeof _schema == 'object' && Object.keys(_schema).length > 0
- : it.util.schemaHasRules(_schema, it.RULES.all))
- #}}
- {{## def.strLength:
- {{? it.opts.unicode === false }}
- {{=$data}}.length
- {{??}}
- ucs2length({{=$data}})
- {{?}}
- #}}
- {{## def.willOptimize:
- it.util.varOccurences($code, $nextData) < 2
- #}}
- {{## def.generateSubschemaCode:
- {{
- var $code = it.validate($it);
- $it.baseId = $currentBaseId;
- }}
- #}}
- {{## def.insertSubschemaCode:
- {{= it.validate($it) }}
- {{ $it.baseId = $currentBaseId; }}
- #}}
- {{## def._optimizeValidate:
- it.util.varReplace($code, $nextData, $passData)
- #}}
- {{## def.optimizeValidate:
- {{? {{# def.willOptimize}} }}
- {{= {{# def._optimizeValidate }} }}
- {{??}}
- var {{=$nextData}} = {{=$passData}};
- {{= $code }}
- {{?}}
- #}}
- {{## def.cleanUp: {{ out = it.util.cleanUpCode(out); }} #}}
- {{## def.finalCleanUp: {{ out = it.util.finalCleanUpCode(out, $async); }} #}}
- {{## def.$data:
- {{
- var $isData = it.opts.$data && $schema && $schema.$data
- , $schemaValue;
- }}
- {{? $isData }}
- var schema{{=$lvl}} = {{= it.util.getData($schema.$data, $dataLvl, it.dataPathArr) }};
- {{ $schemaValue = 'schema' + $lvl; }}
- {{??}}
- {{ $schemaValue = $schema; }}
- {{?}}
- #}}
- {{## def.$dataNotType:_type:
- {{?$isData}} ({{=$schemaValue}} !== undefined && typeof {{=$schemaValue}} != _type) || {{?}}
- #}}
- {{## def.check$dataIsArray:
- if (schema{{=$lvl}} === undefined) {{=$valid}} = true;
- else if (!Array.isArray(schema{{=$lvl}})) {{=$valid}} = false;
- else {
- #}}
- {{## def.beginDefOut:
- {{
- var $$outStack = $$outStack || [];
- $$outStack.push(out);
- out = '';
- }}
- #}}
- {{## def.storeDefOut:_variable:
- {{
- var _variable = out;
- out = $$outStack.pop();
- }}
- #}}
- {{## def.dataPath:(dataPath || ''){{? it.errorPath != '""'}} + {{= it.errorPath }}{{?}}#}}
- {{## def.setParentData:
- {{
- var $parentData = $dataLvl ? 'data' + (($dataLvl-1)||'') : 'parentData'
- , $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
- }}
- #}}
- {{## def.passParentData:
- {{# def.setParentData }}
- , {{= $parentData }}
- , {{= $parentDataProperty }}
- #}}
- {{## def.iterateProperties:
- {{? $ownProperties }}
- {{=$dataProperties}} = {{=$dataProperties}} || Object.keys({{=$data}});
- for (var {{=$idx}}=0; {{=$idx}}<{{=$dataProperties}}.length; {{=$idx}}++) {
- var {{=$key}} = {{=$dataProperties}}[{{=$idx}}];
- {{??}}
- for (var {{=$key}} in {{=$data}}) {
- {{?}}
- #}}
- {{## def.noPropertyInData:
- {{=$useData}} === undefined
- {{? $ownProperties }}
- || !{{# def.isOwnProperty }}
- {{?}}
- #}}
- {{## def.isOwnProperty:
- Object.prototype.hasOwnProperty.call({{=$data}}, '{{=it.util.escapeQuotes($propertyKey)}}')
- #}}
|