blob: 095fd2f7429325cfd0baec3c1923eaf08f5a8b90 [file] [log] [blame]
! cue vet schema.cue data.yaml
-- frontmatter.toml --
title = "Validation"
description = ""
-- text.md --
Constraints specify what values are allowed.
To CUE they are just values like anything else,
but conceptually they can be explained as something in between types and
concrete values.
Constraints can be used to validate values of concrete instances.
They can be applied to CUE data, or directly to YAML or JSON.
But constraints can also reduce boilerplate.
If a constraints defines a concrete value, there is no need
to specify it in values to which this constraint applies.
-- schema.cue --
Language :: {
tag: string
name: =~"^\\p{Lu}" // Must start with an uppercase letter.
}
languages: [...Language]
-- data.yaml --
languages:
- tag: en
name: English
- tag: nl
name: dutch
- tag: no
name: Norwegian
-- expect-stderr --
languages.2.tag: conflicting values string and false (mismatched types string and bool):
./data.yaml:6:11
./schema.cue:2:8
languages.1.name: invalid value "dutch" (does not match =~"^\\p{Lu}"):
./schema.cue:3:8
./data.yaml:5:12