main
Last change
on this file was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 13 days ago |
F4 Finalna Verzija
|
-
Property mode
set to
100644
|
File size:
863 bytes
|
Rev | Line | |
---|
[79a0317] | 1 | import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
|
---|
| 2 | import type {KeywordCxt} from "../../compile/validate"
|
---|
| 3 | import {_} from "../../compile/codegen"
|
---|
| 4 | import {useFunc} from "../../compile/util"
|
---|
| 5 | import equal from "../../runtime/equal"
|
---|
| 6 |
|
---|
| 7 | export type ConstError = ErrorObject<"const", {allowedValue: any}>
|
---|
| 8 |
|
---|
| 9 | const error: KeywordErrorDefinition = {
|
---|
| 10 | message: "must be equal to constant",
|
---|
| 11 | params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,
|
---|
| 12 | }
|
---|
| 13 |
|
---|
| 14 | const def: CodeKeywordDefinition = {
|
---|
| 15 | keyword: "const",
|
---|
| 16 | $data: true,
|
---|
| 17 | error,
|
---|
| 18 | code(cxt: KeywordCxt) {
|
---|
| 19 | const {gen, data, $data, schemaCode, schema} = cxt
|
---|
| 20 | if ($data || (schema && typeof schema == "object")) {
|
---|
| 21 | cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)
|
---|
| 22 | } else {
|
---|
| 23 | cxt.fail(_`${schema} !== ${data}`)
|
---|
| 24 | }
|
---|
| 25 | },
|
---|
| 26 | }
|
---|
| 27 |
|
---|
| 28 | export default def
|
---|
Note:
See
TracBrowser
for help on using the repository browser.