1
|
{{## def.setupKeyword:
|
2
|
{{
|
3
|
var $lvl = it.level;
|
4
|
var $dataLvl = it.dataLevel;
|
5
|
var $schema = it.schema[$keyword];
|
6
|
var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
|
7
|
var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
|
8
|
var $breakOnError = !it.opts.allErrors;
|
9
|
var $errorKeyword;
|
10
|
|
11
|
var $data = 'data' + ($dataLvl || '');
|
12
|
var $valid = 'valid' + $lvl;
|
13
|
var $errs = 'errs__' + $lvl;
|
14
|
}}
|
15
|
#}}
|
16
|
|
17
|
|
18
|
{{## def.setCompositeRule:
|
19
|
{{
|
20
|
var $wasComposite = it.compositeRule;
|
21
|
it.compositeRule = $it.compositeRule = true;
|
22
|
}}
|
23
|
#}}
|
24
|
|
25
|
|
26
|
{{## def.resetCompositeRule:
|
27
|
{{ it.compositeRule = $it.compositeRule = $wasComposite; }}
|
28
|
#}}
|
29
|
|
30
|
|
31
|
{{## def.setupNextLevel:
|
32
|
{{
|
33
|
var $it = it.util.copy(it);
|
34
|
var $closingBraces = '';
|
35
|
$it.level++;
|
36
|
var $nextValid = 'valid' + $it.level;
|
37
|
}}
|
38
|
#}}
|
39
|
|
40
|
|
41
|
{{## def.ifValid:
|
42
|
{{? $breakOnError }}
|
43
|
if ({{=$valid}}) {
|
44
|
{{ $closingBraces += '}'; }}
|
45
|
{{?}}
|
46
|
#}}
|
47
|
|
48
|
|
49
|
{{## def.ifResultValid:
|
50
|
{{? $breakOnError }}
|
51
|
if ({{=$nextValid}}) {
|
52
|
{{ $closingBraces += '}'; }}
|
53
|
{{?}}
|
54
|
#}}
|
55
|
|
56
|
|
57
|
{{## def.elseIfValid:
|
58
|
{{? $breakOnError }}
|
59
|
{{ $closingBraces += '}'; }}
|
60
|
else {
|
61
|
{{?}}
|
62
|
#}}
|
63
|
|
64
|
|
65
|
{{## def.nonEmptySchema:_schema:
|
66
|
(it.opts.strictKeywords
|
67
|
? typeof _schema == 'object' && Object.keys(_schema).length > 0
|
68
|
: it.util.schemaHasRules(_schema, it.RULES.all))
|
69
|
#}}
|
70
|
|
71
|
|
72
|
{{## def.strLength:
|
73
|
{{? it.opts.unicode === false }}
|
74
|
{{=$data}}.length
|
75
|
{{??}}
|
76
|
ucs2length({{=$data}})
|
77
|
{{?}}
|
78
|
#}}
|
79
|
|
80
|
|
81
|
{{## def.willOptimize:
|
82
|
it.util.varOccurences($code, $nextData) < 2
|
83
|
#}}
|
84
|
|
85
|
|
86
|
{{## def.generateSubschemaCode:
|
87
|
{{
|
88
|
var $code = it.validate($it);
|
89
|
$it.baseId = $currentBaseId;
|
90
|
}}
|
91
|
#}}
|
92
|
|
93
|
|
94
|
{{## def.insertSubschemaCode:
|
95
|
{{= it.validate($it) }}
|
96
|
{{ $it.baseId = $currentBaseId; }}
|
97
|
#}}
|
98
|
|
99
|
|
100
|
{{## def._optimizeValidate:
|
101
|
it.util.varReplace($code, $nextData, $passData)
|
102
|
#}}
|
103
|
|
104
|
|
105
|
{{## def.optimizeValidate:
|
106
|
{{? {{# def.willOptimize}} }}
|
107
|
{{= {{# def._optimizeValidate }} }}
|
108
|
{{??}}
|
109
|
var {{=$nextData}} = {{=$passData}};
|
110
|
{{= $code }}
|
111
|
{{?}}
|
112
|
#}}
|
113
|
|
114
|
|
115
|
{{## def.cleanUp: {{ out = it.util.cleanUpCode(out); }} #}}
|
116
|
|
117
|
|
118
|
{{## def.finalCleanUp: {{ out = it.util.finalCleanUpCode(out, $async); }} #}}
|
119
|
|
120
|
|
121
|
{{## def.$data:
|
122
|
{{
|
123
|
var $isData = it.opts.$data && $schema && $schema.$data
|
124
|
, $schemaValue;
|
125
|
}}
|
126
|
{{? $isData }}
|
127
|
var schema{{=$lvl}} = {{= it.util.getData($schema.$data, $dataLvl, it.dataPathArr) }};
|
128
|
{{ $schemaValue = 'schema' + $lvl; }}
|
129
|
{{??}}
|
130
|
{{ $schemaValue = $schema; }}
|
131
|
{{?}}
|
132
|
#}}
|
133
|
|
134
|
|
135
|
{{## def.$dataNotType:_type:
|
136
|
{{?$isData}} ({{=$schemaValue}} !== undefined && typeof {{=$schemaValue}} != _type) || {{?}}
|
137
|
#}}
|
138
|
|
139
|
|
140
|
{{## def.check$dataIsArray:
|
141
|
if (schema{{=$lvl}} === undefined) {{=$valid}} = true;
|
142
|
else if (!Array.isArray(schema{{=$lvl}})) {{=$valid}} = false;
|
143
|
else {
|
144
|
#}}
|
145
|
|
146
|
|
147
|
{{## def.beginDefOut:
|
148
|
{{
|
149
|
var $$outStack = $$outStack || [];
|
150
|
$$outStack.push(out);
|
151
|
out = '';
|
152
|
}}
|
153
|
#}}
|
154
|
|
155
|
|
156
|
{{## def.storeDefOut:_variable:
|
157
|
{{
|
158
|
var _variable = out;
|
159
|
out = $$outStack.pop();
|
160
|
}}
|
161
|
#}}
|
162
|
|
163
|
|
164
|
{{## def.dataPath:(dataPath || ''){{? it.errorPath != '""'}} + {{= it.errorPath }}{{?}}#}}
|
165
|
|
166
|
{{## def.setParentData:
|
167
|
{{
|
168
|
var $parentData = $dataLvl ? 'data' + (($dataLvl-1)||'') : 'parentData'
|
169
|
, $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
|
170
|
}}
|
171
|
#}}
|
172
|
|
173
|
{{## def.passParentData:
|
174
|
{{# def.setParentData }}
|
175
|
, {{= $parentData }}
|
176
|
, {{= $parentDataProperty }}
|
177
|
#}}
|
178
|
|
179
|
|
180
|
{{## def.iterateProperties:
|
181
|
{{? $ownProperties }}
|
182
|
{{=$dataProperties}} = {{=$dataProperties}} || Object.keys({{=$data}});
|
183
|
for (var {{=$idx}}=0; {{=$idx}}<{{=$dataProperties}}.length; {{=$idx}}++) {
|
184
|
var {{=$key}} = {{=$dataProperties}}[{{=$idx}}];
|
185
|
{{??}}
|
186
|
for (var {{=$key}} in {{=$data}}) {
|
187
|
{{?}}
|
188
|
#}}
|
189
|
|
190
|
|
191
|
{{## def.noPropertyInData:
|
192
|
{{=$useData}} === undefined
|
193
|
{{? $ownProperties }}
|
194
|
|| !{{# def.isOwnProperty }}
|
195
|
{{?}}
|
196
|
#}}
|
197
|
|
198
|
|
199
|
{{## def.isOwnProperty:
|
200
|
Object.prototype.hasOwnProperty.call({{=$data}}, '{{=it.util.escapeQuotes($propertyKey)}}')
|
201
|
#}}
|