source: imaps-frontend/node_modules/ajv/lib/dot/_limit.jst@ d565449

main
Last change on this file since d565449 was d565449, checked in by stefan toskovski <stefantoska84@…>, 4 weeks ago

Update repo after prototype presentation

  • Property mode set to 100644
File size: 3.8 KB
Line 
1{{# def.definitions }}
2{{# def.errors }}
3{{# def.setupKeyword }}
4{{# def.$data }}
5
6{{## def.setExclusiveLimit:
7 $exclusive = true;
8 $errorKeyword = $exclusiveKeyword;
9 $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
10#}}
11
12{{
13 var $isMax = $keyword == 'maximum'
14 , $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum'
15 , $schemaExcl = it.schema[$exclusiveKeyword]
16 , $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data
17 , $op = $isMax ? '<' : '>'
18 , $notOp = $isMax ? '>' : '<'
19 , $errorKeyword = undefined;
20
21 if (!($isData || typeof $schema == 'number' || $schema === undefined)) {
22 throw new Error($keyword + ' must be number');
23 }
24 if (!($isDataExcl || $schemaExcl === undefined
25 || typeof $schemaExcl == 'number'
26 || typeof $schemaExcl == 'boolean')) {
27 throw new Error($exclusiveKeyword + ' must be number or boolean');
28 }
29}}
30
31{{? $isDataExcl }}
32 {{
33 var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr)
34 , $exclusive = 'exclusive' + $lvl
35 , $exclType = 'exclType' + $lvl
36 , $exclIsNumber = 'exclIsNumber' + $lvl
37 , $opExpr = 'op' + $lvl
38 , $opStr = '\' + ' + $opExpr + ' + \'';
39 }}
40 var schemaExcl{{=$lvl}} = {{=$schemaValueExcl}};
41 {{ $schemaValueExcl = 'schemaExcl' + $lvl; }}
42
43 var {{=$exclusive}};
44 var {{=$exclType}} = typeof {{=$schemaValueExcl}};
45 if ({{=$exclType}} != 'boolean' && {{=$exclType}} != 'undefined' && {{=$exclType}} != 'number') {
46 {{ var $errorKeyword = $exclusiveKeyword; }}
47 {{# def.error:'_exclusiveLimit' }}
48 } else if ({{# def.$dataNotType:'number' }}
49 {{=$exclType}} == 'number'
50 ? (
51 ({{=$exclusive}} = {{=$schemaValue}} === undefined || {{=$schemaValueExcl}} {{=$op}}= {{=$schemaValue}})
52 ? {{=$data}} {{=$notOp}}= {{=$schemaValueExcl}}
53 : {{=$data}} {{=$notOp}} {{=$schemaValue}}
54 )
55 : (
56 ({{=$exclusive}} = {{=$schemaValueExcl}} === true)
57 ? {{=$data}} {{=$notOp}}= {{=$schemaValue}}
58 : {{=$data}} {{=$notOp}} {{=$schemaValue}}
59 )
60 || {{=$data}} !== {{=$data}}) {
61 var op{{=$lvl}} = {{=$exclusive}} ? '{{=$op}}' : '{{=$op}}=';
62 {{
63 if ($schema === undefined) {
64 $errorKeyword = $exclusiveKeyword;
65 $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;
66 $schemaValue = $schemaValueExcl;
67 $isData = $isDataExcl;
68 }
69 }}
70{{??}}
71 {{
72 var $exclIsNumber = typeof $schemaExcl == 'number'
73 , $opStr = $op; /*used in error*/
74 }}
75
76 {{? $exclIsNumber && $isData }}
77 {{ var $opExpr = '\'' + $opStr + '\''; /*used in error*/ }}
78 if ({{# def.$dataNotType:'number' }}
79 ( {{=$schemaValue}} === undefined
80 || {{=$schemaExcl}} {{=$op}}= {{=$schemaValue}}
81 ? {{=$data}} {{=$notOp}}= {{=$schemaExcl}}
82 : {{=$data}} {{=$notOp}} {{=$schemaValue}} )
83 || {{=$data}} !== {{=$data}}) {
84 {{??}}
85 {{
86 if ($exclIsNumber && $schema === undefined) {
87 {{# def.setExclusiveLimit }}
88 $schemaValue = $schemaExcl;
89 $notOp += '=';
90 } else {
91 if ($exclIsNumber)
92 $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);
93
94 if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {
95 {{# def.setExclusiveLimit }}
96 $notOp += '=';
97 } else {
98 $exclusive = false;
99 $opStr += '=';
100 }
101 }
102
103 var $opExpr = '\'' + $opStr + '\''; /*used in error*/
104 }}
105
106 if ({{# def.$dataNotType:'number' }}
107 {{=$data}} {{=$notOp}} {{=$schemaValue}}
108 || {{=$data}} !== {{=$data}}) {
109 {{?}}
110{{?}}
111 {{ $errorKeyword = $errorKeyword || $keyword; }}
112 {{# def.error:'_limit' }}
113 } {{? $breakOnError }} else { {{?}}
Note: See TracBrowser for help on using the repository browser.