You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
3.9 KiB
203 lines
3.9 KiB
{{## 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)}}') |
|
#}}
|
|
|