| {{# def.definitions }} |
| {{# def.errors }} |
| {{# def.setupKeyword }} |
| |
| var {{=$valid}} = undefined; |
| |
| {{## def.skipFormatLimit: |
| {{=$valid}} = true; |
| {{ return out; }} |
| #}} |
| |
| {{## def.compareFormat: |
| {{? $isData }} |
| if ({{=$schemaValue}} === undefined) {{=$valid}} = true; |
| else if (typeof {{=$schemaValue}} != 'string') {{=$valid}} = false; |
| else { |
| {{ $closingBraces += '}'; }} |
| {{?}} |
| |
| {{? $isDataFormat }} |
| if (!{{=$compare}}) {{=$valid}} = true; |
| else { |
| {{ $closingBraces += '}'; }} |
| {{?}} |
| |
| var {{=$result}} = {{=$compare}}({{=$data}}, {{# def.schemaValueQS }}); |
| |
| if ({{=$result}} === undefined) {{=$valid}} = false; |
| #}} |
| |
| |
| {{? it.opts.format === false }}{{# def.skipFormatLimit }}{{?}} |
| |
| {{ |
| var $schemaFormat = it.schema.format |
| , $isDataFormat = it.opts.$data && $schemaFormat.$data |
| , $closingBraces = ''; |
| }} |
| |
| {{? $isDataFormat }} |
| {{ |
| var $schemaValueFormat = it.util.getData($schemaFormat.$data, $dataLvl, it.dataPathArr) |
| , $format = 'format' + $lvl |
| , $compare = 'compare' + $lvl; |
| }} |
| |
| var {{=$format}} = formats[{{=$schemaValueFormat}}] |
| , {{=$compare}} = {{=$format}} && {{=$format}}.compare; |
| {{??}} |
| {{ var $format = it.formats[$schemaFormat]; }} |
| {{? !($format && $format.compare) }} |
| {{# def.skipFormatLimit }} |
| {{?}} |
| {{ var $compare = 'formats' + it.util.getProperty($schemaFormat) + '.compare'; }} |
| {{?}} |
| |
| {{ |
| var $isMax = $keyword == 'formatMaximum' |
| , $exclusiveKeyword = 'formatExclusive' + ($isMax ? 'Maximum' : 'Minimum') |
| , $schemaExcl = it.schema[$exclusiveKeyword] |
| , $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data |
| , $op = $isMax ? '<' : '>' |
| , $result = 'result' + $lvl; |
| }} |
| |
| {{# def.$data }} |
| |
| |
| {{? $isDataExcl }} |
| {{ |
| var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr) |
| , $exclusive = 'exclusive' + $lvl |
| , $opExpr = 'op' + $lvl |
| , $opStr = '\' + ' + $opExpr + ' + \''; |
| }} |
| var schemaExcl{{=$lvl}} = {{=$schemaValueExcl}}; |
| {{ $schemaValueExcl = 'schemaExcl' + $lvl; }} |
| |
| if (typeof {{=$schemaValueExcl}} != 'boolean' && {{=$schemaValueExcl}} !== undefined) { |
| {{=$valid}} = false; |
| {{ var $errorKeyword = $exclusiveKeyword; }} |
| {{# def.error:'_formatExclusiveLimit' }} |
| } |
| |
| {{# def.elseIfValid }} |
| |
| {{# def.compareFormat }} |
| var {{=$exclusive}} = {{=$schemaValueExcl}} === true; |
| |
| if ({{=$valid}} === undefined) { |
| {{=$valid}} = {{=$exclusive}} |
| ? {{=$result}} {{=$op}} 0 |
| : {{=$result}} {{=$op}}= 0; |
| } |
| |
| if (!{{=$valid}}) var op{{=$lvl}} = {{=$exclusive}} ? '{{=$op}}' : '{{=$op}}='; |
| {{??}} |
| {{ |
| var $exclusive = $schemaExcl === true |
| , $opStr = $op; /*used in error*/ |
| if (!$exclusive) $opStr += '='; |
| var $opExpr = '\'' + $opStr + '\''; /*used in error*/ |
| }} |
| |
| {{# def.compareFormat }} |
| |
| if ({{=$valid}} === undefined) |
| {{=$valid}} = {{=$result}} {{=$op}}{{?!$exclusive}}={{?}} 0; |
| {{?}} |
| |
| {{= $closingBraces }} |
| |
| if (!{{=$valid}}) { |
| {{ var $errorKeyword = $keyword; }} |
| {{# def.error:'_formatLimit' }} |
| } |