如何在 Cuelang 中使用 yaml.Validate 进行 YAML 验证?

huangapple go评论81阅读模式
英文:

How to use yaml.Validate in cuelang for yaml validation?

问题

以下是要翻译的内容:

/cuelang.org/go/yaml.go
func Validate(b []byte, v cue.Value) error {
   _, err := pkgyaml.Validate(b, v)
   return err
}

没有任何示例代码告诉我如何使用这个API,我需要一些示例来了解如何使用它。

英文:
/cuelang.org/go/yaml.go
func Validate(b []byte, v cue.Value) error {
   _, err := pkgyaml.Validate(b, v)
   return err
}

There isn't any sample code to tell me how to use this API, I need some examples to understand how to use it.

答案1

得分: 1

我明白了。首先,我们需要一个cue文件:

// demo.cue
min: number
max: number & >min

然后是:

// valid_test.go
package demo

import (
    "cuelang.org/go/cue/cuecontext"
    "cuelang.org/go/encoding/yaml"
    "fmt"
    "io/ioutil"
    "strings"
    "testing"
)

const Yaml = `
min: 10
max: 5
`

func TestValidate(t *testing.T) {
    r := strings.NewReader(Yaml)
    b, _ := ioutil.ReadAll(r)
    cue, _ := ioutil.ReadFile("demo.cue")

    // Cue API for Go
    c := cuecontext.New()
    v := c.CompileBytes(cue)
    err := yaml.Validate(b, v)

    fmt.Println(err) // max: invalid value 5 (out of bound >10)
}
英文:

I figured it out. First we need a cue file:

// demo.cue
min: number
max: number & >min

And then:

// valid_test.go
package demo

import (
    "cuelang.org/go/cue/cuecontext"
    "cuelang.org/go/encoding/yaml"
    "fmt"
    "io/ioutil"
    "strings"
    "testing"
)

const Yaml = `
min: 10
max: 5
`

func TestValidate(t *testing.T) {
    r := strings.NewReader(Yaml)
    b, _ := ioutil.ReadAll(r)
    cue, _ := ioutil.ReadFile("demo.cue")

    // Cue API for Go
    c := cuecontext.New()
    v := c.CompileBytes(cue)
    err := yaml.Validate(b, v)

    fmt.Println(err) // max: invalid value 5 (out of bound >10)
}

huangapple
  • 本文由 发表于 2022年7月8日 01:24:17
  • 转载请务必保留本文链接:https://go.coder-hub.com/72901997.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定