123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- {{# def.definitions }}
- {{# def.errors }}
- {{# def.setupKeyword }}
- {{# def.$data }}
-
- {{## def.setExclusiveLimit:
- $exclusive = true;
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
- #}}
-
- {{
- var $isMax = $keyword == 'maximum'
- , $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum'
- , $schemaExcl = it.schema[$exclusiveKeyword]
- , $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data
- , $op = $isMax ? '<' : '>'
- , $notOp = $isMax ? '>' : '<'
- , $errorKeyword = undefined;
-
- if (!($isData || typeof $schema == 'number' || $schema === undefined)) {
- throw new Error($keyword + ' must be number');
- }
- if (!($isDataExcl || $schemaExcl === undefined
- || typeof $schemaExcl == 'number'
- || typeof $schemaExcl == 'boolean')) {
- throw new Error($exclusiveKeyword + ' must be number or boolean');
- }
- }}
-
- {{? $isDataExcl }}
- {{
- var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr)
- , $exclusive = 'exclusive' + $lvl
- , $exclType = 'exclType' + $lvl
- , $exclIsNumber = 'exclIsNumber' + $lvl
- , $opExpr = 'op' + $lvl
- , $opStr = '\' + ' + $opExpr + ' + \'';
- }}
- var schemaExcl{{=$lvl}} = {{=$schemaValueExcl}};
- {{ $schemaValueExcl = 'schemaExcl' + $lvl; }}
-
- var {{=$exclusive}};
- var {{=$exclType}} = typeof {{=$schemaValueExcl}};
- if ({{=$exclType}} != 'boolean' && {{=$exclType}} != 'undefined' && {{=$exclType}} != 'number') {
- {{ var $errorKeyword = $exclusiveKeyword; }}
- {{# def.error:'_exclusiveLimit' }}
- } else if ({{# def.$dataNotType:'number' }}
- {{=$exclType}} == 'number'
- ? (
- ({{=$exclusive}} = {{=$schemaValue}} === undefined || {{=$schemaValueExcl}} {{=$op}}= {{=$schemaValue}})
- ? {{=$data}} {{=$notOp}}= {{=$schemaValueExcl}}
- : {{=$data}} {{=$notOp}} {{=$schemaValue}}
- )
- : (
- ({{=$exclusive}} = {{=$schemaValueExcl}} === true)
- ? {{=$data}} {{=$notOp}}= {{=$schemaValue}}
- : {{=$data}} {{=$notOp}} {{=$schemaValue}}
- )
- || {{=$data}} !== {{=$data}}) {
- var op{{=$lvl}} = {{=$exclusive}} ? '{{=$op}}' : '{{=$op}}=';
- {{
- if ($schema === undefined) {
- $errorKeyword = $exclusiveKeyword;
- $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
- $schemaValue = $schemaValueExcl;
- $isData = $isDataExcl;
- }
- }}
- {{??}}
- {{
- var $exclIsNumber = typeof $schemaExcl == 'number'
- , $opStr = $op; /*used in error*/
- }}
-
- {{? $exclIsNumber && $isData }}
- {{ var $opExpr = '\'' + $opStr + '\''; /*used in error*/ }}
- if ({{# def.$dataNotType:'number' }}
- ( {{=$schemaValue}} === undefined
- || {{=$schemaExcl}} {{=$op}}= {{=$schemaValue}}
- ? {{=$data}} {{=$notOp}}= {{=$schemaExcl}}
- : {{=$data}} {{=$notOp}} {{=$schemaValue}} )
- || {{=$data}} !== {{=$data}}) {
- {{??}}
- {{
- if ($exclIsNumber && $schema === undefined) {
- {{# def.setExclusiveLimit }}
- $schemaValue = $schemaExcl;
- $notOp += '=';
- } else {
- if ($exclIsNumber)
- $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);
-
- if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {
- {{# def.setExclusiveLimit }}
- $notOp += '=';
- } else {
- $exclusive = false;
- $opStr += '=';
- }
- }
-
- var $opExpr = '\'' + $opStr + '\''; /*used in error*/
- }}
-
- if ({{# def.$dataNotType:'number' }}
- {{=$data}} {{=$notOp}} {{=$schemaValue}}
- || {{=$data}} !== {{=$data}}) {
- {{?}}
- {{?}}
- {{ $errorKeyword = $errorKeyword || $keyword; }}
- {{# def.error:'_limit' }}
- } {{? $breakOnError }} else { {{?}}
|