Spaces:
Running
Running
{{## 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) | |
|| _schema === false | |
: 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.$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.numberKeyword: | |
{{? !($isData || typeof $schema == 'number') }} | |
{{ throw new Error($keyword + ' must be number'); }} | |
{{?}} | |
#}} | |
{{## 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)}}') | |
#}} | |