検証
Settings (v0.2.2)
v0.2 で追加された機能です。CEL(Common Expression Language)式を使ってフィールド値を検証できます。


名前付き制約([[constraints]])
スキーマのトップレベルに,再利用可能な検証ルールを名前付きで定義できます。
toml
[[constraints]]
id = "email_format"
expr = "validation.email.matches('^[^@\\\\s]+@[^@\\\\s]+$')"
message = { en = "Enter a valid email address", ja = "メール形式で入力してください" }| フィールド | 説明 |
|---|---|
id | スキーマ内で一意の識別子 |
expr | bool を返す CEL 式。設定ファイルの値をルートコンテキストとして参照する |
message | 違反時にフィールド下へ表示するメッセージ(ローカライズ可)。validate で参照する場合は必須 |
フィールドへの適用(validate)
制約 id を文字列で参照するか,フィールド側にインラインで式とメッセージを書きます。
toml
[[tabs.fields]]
key = "validation.email"
widget = "text_input"
validate = ["email_format"]
[[tabs.fields.validate]]
expr = "validation.password.size() >= 16"
message = { en = "16 or more characters required", ja = "16文字以上必要です" }- 複数のルールを指定した場合はすべて評価され,違反したものすべてのメッセージが表示されます
- 違反が残っている間,保存(OK / Apply / 自動保存のいずれも)はブロックされます
- 違反のあるフィールドには,枠にエラー表示用のスタイルが付きます
選択肢の無効化(option_states)
segmented_control と select のみで使えます。条件に応じて特定の選択肢をグレーアウトできます。
toml
[[tabs.fields.option_states]]
value = "0"
when = "chars_min_one" # [[constraints]] の id を参照
# または式を直接書く場合:
# enabled = "some.other.field > 0"when(制約 id の参照)と enabled(式の直書き)は排他で,どちらか一方だけを指定します。
スキーマの静的検証(開発時)
GUI をビルドせずにスキーマの整合性(参照関係や CEL 構文など)を検査できる CLI settings-schema-checker が用意されています。詳細はビルドを参照してください。