Projekt

Obecné

Profil

Stáhnout (4.83 KB) Statistiky
| Větev: | Revize:
1
{{# def.definitions }}
2
{{# def.errors }}
3
{{# def.setupKeyword }}
4
{{# def.$data }}
5

    
6
{{
7
  var $rule = this
8
    , $definition = 'definition' + $lvl
9
    , $rDef = $rule.definition
10
    , $closingBraces = '';
11
  var $validate = $rDef.validate;
12
  var $compile, $inline, $macro, $ruleValidate, $validateCode;
13
}}
14

    
15
{{? $isData && $rDef.$data }}
16
  {{
17
    $validateCode = 'keywordValidate' + $lvl;
18
    var $validateSchema = $rDef.validateSchema;
19
  }}
20
  var {{=$definition}} = RULES.custom['{{=$keyword}}'].definition;
21
  var {{=$validateCode}} = {{=$definition}}.validate;
22
{{??}}
23
  {{
24
    $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);
25
    if (!$ruleValidate) return;
26
    $schemaValue = 'validate.schema' + $schemaPath;
27
    $validateCode = $ruleValidate.code;
28
    $compile = $rDef.compile;
29
    $inline = $rDef.inline;
30
    $macro = $rDef.macro;
31
  }}
32
{{?}}
33

    
34
{{
35
  var $ruleErrs = $validateCode + '.errors'
36
    , $i = 'i' + $lvl
37
    , $ruleErr = 'ruleErr' + $lvl
38
    , $asyncKeyword = $rDef.async;
39

    
40
  if ($asyncKeyword && !it.async)
41
    throw new Error('async keyword in sync schema');
42
}}
43

    
44

    
45
{{? !($inline || $macro) }}{{=$ruleErrs}} = null;{{?}}
46
var {{=$errs}} = errors;
47
var {{=$valid}};
48

    
49
{{## def.callRuleValidate:
50
  {{=$validateCode}}.call(
51
    {{? it.opts.passContext }}this{{??}}self{{?}}
52
    {{? $compile || $rDef.schema === false }}
53
      , {{=$data}}
54
    {{??}}
55
      , {{=$schemaValue}}
56
      , {{=$data}}
57
      , validate.schema{{=it.schemaPath}}
58
    {{?}}
59
    , {{# def.dataPath }}
60
    {{# def.passParentData }}
61
    , rootData
62
  )
63
#}}
64

    
65
{{## def.extendErrors:_inline:
66
  for (var {{=$i}}={{=$errs}}; {{=$i}}<errors; {{=$i}}++) {
67
    var {{=$ruleErr}} = vErrors[{{=$i}}];
68
    if ({{=$ruleErr}}.dataPath === undefined)
69
      {{=$ruleErr}}.dataPath = (dataPath || '') + {{= it.errorPath }};
70
    {{# _inline ? 'if (\{\{=$ruleErr\}\}.schemaPath === undefined) {' : '' }}
71
      {{=$ruleErr}}.schemaPath = "{{=$errSchemaPath}}";
72
    {{# _inline ? '}' : '' }}
73
    {{? it.opts.verbose }}
74
      {{=$ruleErr}}.schema = {{=$schemaValue}};
75
      {{=$ruleErr}}.data = {{=$data}};
76
    {{?}}
77
  }
78
#}}
79

    
80

    
81
{{? $isData && $rDef.$data }}
82
  {{ $closingBraces += '}'; }}
83
  if ({{=$schemaValue}} === undefined) {
84
    {{=$valid}} = true;
85
  } else {
86
  {{? $validateSchema }}
87
    {{ $closingBraces += '}'; }}
88
    {{=$valid}} = {{=$definition}}.validateSchema({{=$schemaValue}});
89
    if ({{=$valid}}) {
90
  {{?}}
91
{{?}}
92

    
93
{{? $inline }}
94
  {{? $rDef.statements }}
95
    {{= $ruleValidate.validate }}
96
  {{??}}
97
    {{=$valid}} = {{= $ruleValidate.validate }};
98
  {{?}}
99
{{?? $macro }}
100
  {{# def.setupNextLevel }}
101
  {{
102
    $it.schema = $ruleValidate.validate;
103
    $it.schemaPath = '';
104
  }}
105
  {{# def.setCompositeRule }}
106
  {{ var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); }}
107
  {{# def.resetCompositeRule }}
108
  {{= $code }}
109
{{??}}
110
  {{# def.beginDefOut}}
111
    {{# def.callRuleValidate }}
112
  {{# def.storeDefOut:def_callRuleValidate }}
113

    
114
  {{? $rDef.errors === false }}
115
    {{=$valid}} = {{? $asyncKeyword }}await {{?}}{{= def_callRuleValidate }};
116
  {{??}}
117
    {{? $asyncKeyword }}
118
      {{ $ruleErrs = 'customErrors' + $lvl; }}
119
      var {{=$ruleErrs}} = null;
120
      try {
121
        {{=$valid}} = await {{= def_callRuleValidate }};
122
      } catch (e) {
123
        {{=$valid}} = false;
124
        if (e instanceof ValidationError) {{=$ruleErrs}} = e.errors;
125
        else throw e;
126
      }
127
    {{??}}
128
      {{=$ruleErrs}} = null;
129
      {{=$valid}} = {{= def_callRuleValidate }};
130
    {{?}}
131
  {{?}}
132
{{?}}
133

    
134
{{? $rDef.modifying }}
135
  if ({{=$parentData}}) {{=$data}} = {{=$parentData}}[{{=$parentDataProperty}}];
136
{{?}}
137

    
138
{{= $closingBraces }}
139

    
140
{{## def.notValidationResult:
141
  {{? $rDef.valid === undefined }}
142
    !{{? $macro }}{{=$nextValid}}{{??}}{{=$valid}}{{?}}
143
  {{??}}
144
    {{= !$rDef.valid }}
145
  {{?}}
146
#}}
147

    
148
{{? $rDef.valid }}
149
  {{? $breakOnError }} if (true) { {{?}}
150
{{??}}
151
  if ({{# def.notValidationResult }}) {
152
    {{ $errorKeyword = $rule.keyword; }}
153
    {{# def.beginDefOut}}
154
      {{# def.error:'custom' }}
155
    {{# def.storeDefOut:def_customError }}
156

    
157
    {{? $inline }}
158
      {{? $rDef.errors }}
159
        {{? $rDef.errors != 'full' }}
160
          {{# def.extendErrors:true }}
161
        {{?}}
162
      {{??}}
163
        {{? $rDef.errors === false}}
164
          {{= def_customError }}
165
        {{??}}
166
          if ({{=$errs}} == errors) {
167
            {{= def_customError }}
168
          } else {
169
            {{# def.extendErrors:true }}
170
          }
171
        {{?}}
172
      {{?}}
173
    {{?? $macro }}
174
      {{# def.extraError:'custom' }}
175
    {{??}}
176
      {{? $rDef.errors === false}}
177
        {{= def_customError }}
178
      {{??}}
179
        if (Array.isArray({{=$ruleErrs}})) {
180
          if (vErrors === null) vErrors = {{=$ruleErrs}};
181
          else vErrors = vErrors.concat({{=$ruleErrs}});
182
          errors = vErrors.length;
183
          {{# def.extendErrors:false }}
184
        } else {
185
          {{= def_customError }}
186
        }
187
      {{?}}
188
    {{?}}
189

    
190
  } {{? $breakOnError }} else { {{?}}
191
{{?}}
(11-11/30)