TBL-005 列間制約
ある列が when の条件を満たすとき、別の列が then の制約を満たすことを検証します。条件付きルールで、行ごとに評価されます。違反は error で報告されます。
「Status が stable のときは Approver 列が空でないこと」「Type が external のときは URL 列が https:// で始まること」のような 行内の条件付き整合性 は、許可値や正規表現だけでは表現できません。このルールはそうした列間の関係を表します。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
when | object | ✓ | 条件(下記) |
then | object | ✓ | 制約(下記) |
section | string | — | 検証対象を特定セクション配下のテーブルに絞る |
files | string | — | このルールを適用するファイルの glob |
when(条件)
Section titled “when(条件)”| フィールド | 型 | 説明 |
|---|---|---|
column | string | 条件を判定する列 |
equals | string | 値がこの文字列と一致するとき |
oneOf | string[] | 値がこの配列のいずれかに含まれるとき |
matches | string | 値が正規表現にマッチするとき |
equals / oneOf / matches はいずれか 1 つを指定します。
then(制約)
Section titled “then(制約)”| フィールド | 型 | 説明 |
|---|---|---|
column | string | 制約をかける列 |
notEmpty | boolean | 値が空でないこと |
equals | string | 値が一致すること |
oneOf | string[] | 値が含まれること |
matches | string | 値がマッチすること |
notEmpty / equals / oneOf / matches はいずれか 1 つ。
| ID | Status | Approver || ------ | ------ | -------- || REQ-01 | stable | alice || REQ-02 | stable | |when: { column: "Status", equals: "stable" }, then: { column: "Approver", notEmpty: true } を設定している場合、stable なのに Approver が空の行が違反になります。
docs/requirements.md line 4 error Row where Status="stable": column "Approver" must not be empty TBL-005| ID | Status | Approver || ------ | ------ | -------- || REQ-01 | stable | alice || REQ-02 | stable | bob |{ "rule": "tbl005", "options": { "when": { "column": "Status", "equals": "stable" }, "then": { "column": "Approver", "notEmpty": true } }}- TBL-003 許可値 — 単一列の値の制約
- TBL-004 セルパターン — 単一列のパターンの制約