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.
72 lines
1.5 KiB
72 lines
1.5 KiB
4 weeks ago
|
{{# def.definitions }}
|
||
|
{{# def.errors }}
|
||
|
{{# def.setupKeyword }}
|
||
|
{{# def.setupNextLevel }}
|
||
|
|
||
|
|
||
|
{{## def.validateIf:
|
||
|
{{# def.setCompositeRule }}
|
||
|
{{ $it.createErrors = false; }}
|
||
|
{{# def._validateSwitchRule:if }}
|
||
|
{{ $it.createErrors = true; }}
|
||
|
{{# def.resetCompositeRule }}
|
||
|
{{=$ifPassed}} = {{=$nextValid}};
|
||
|
#}}
|
||
|
|
||
|
{{## def.validateThen:
|
||
|
{{? typeof $sch.then == 'boolean' }}
|
||
|
{{? $sch.then === false }}
|
||
|
{{# def.error:'switch' }}
|
||
|
{{?}}
|
||
|
var {{=$nextValid}} = {{= $sch.then }};
|
||
|
{{??}}
|
||
|
{{# def._validateSwitchRule:then }}
|
||
|
{{?}}
|
||
|
#}}
|
||
|
|
||
|
{{## def._validateSwitchRule:_clause:
|
||
|
{{
|
||
|
$it.schema = $sch._clause;
|
||
|
$it.schemaPath = $schemaPath + '[' + $caseIndex + ']._clause';
|
||
|
$it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/_clause';
|
||
|
}}
|
||
|
{{# def.insertSubschemaCode }}
|
||
|
#}}
|
||
|
|
||
|
{{## def.switchCase:
|
||
|
{{? $sch.if && {{# def.nonEmptySchema:$sch.if }} }}
|
||
|
var {{=$errs}} = errors;
|
||
|
{{# def.validateIf }}
|
||
|
if ({{=$ifPassed}}) {
|
||
|
{{# def.validateThen }}
|
||
|
} else {
|
||
|
{{# def.resetErrors }}
|
||
|
}
|
||
|
{{??}}
|
||
|
{{=$ifPassed}} = true;
|
||
|
{{# def.validateThen }}
|
||
|
{{?}}
|
||
|
#}}
|
||
|
|
||
|
|
||
|
{{
|
||
|
var $ifPassed = 'ifPassed' + it.level
|
||
|
, $currentBaseId = $it.baseId
|
||
|
, $shouldContinue;
|
||
|
}}
|
||
|
var {{=$ifPassed}};
|
||
|
|
||
|
{{~ $schema:$sch:$caseIndex }}
|
||
|
{{? $caseIndex && !$shouldContinue }}
|
||
|
if (!{{=$ifPassed}}) {
|
||
|
{{ $closingBraces+= '}'; }}
|
||
|
{{?}}
|
||
|
|
||
|
{{# def.switchCase }}
|
||
|
{{ $shouldContinue = $sch.continue }}
|
||
|
{{~}}
|
||
|
|
||
|
{{= $closingBraces }}
|
||
|
|
||
|
var {{=$valid}} = {{=$nextValid}};
|