プログラムの定義ファイルの形式どうしようかなと、今どきの形式を調べている際に、CUE 言語という形式を知った。
コメントや条件分岐、繰り返し処理が可能… さらに Go 言語のライブラリが使える… とちょっと機能盛沢山すぎる気もするが。
とりあえず触ってみた感じ。
インストール
$ go install cuelang.org/go/cmd/cue@latest
$ cue version
cue version v0.4.3 linux/arm64
こんな定義ファイルで
$ cat persons.cue
#Person: {
name: string
level: int & >=1 & <=10
role: "Administrator" | *"Developer" // Developer is the default
}
alicee: #Person
alicee: {name: "Alice", level: 6 }
bobsmith: #Person
bobsmith: {name: "Bob", level: 5 }
carryz: #Person
bobsmith: {name: "Carry", level: 5 }
Administrators: [ "alicee" ]
for person in Administrators {
"\(person)": {
role: "Administrator"
}
}
評価するとこう。
$ cue eval persons.cue
$ cue eval persons.cue
#Person: {
name: string
level: uint & >=1 & <=10
role: "Developer"
}
alicee: {
name: "Alice"
level: 6
role: "Administrator"
}
bobsmith: {
name: "Bob"
level: 5
role: "Developer"
}
carryz: {
name: "Carry"
level: 5
role: "Developer"
}
Administrators: ["alicee"]