{{## 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.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.cleanUpVarErrors: {{ out = it.util.cleanUpVarErrors(out, $async); }} #}} {{## def.$data: {{ var $isData = it.opts.v5 && $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.checkOwnProperty: {{? $ownProperties }} if (!Object.prototype.hasOwnProperty.call({{=$data}}, {{=$key}})) continue; {{?}} #}}