From 7e587b9a3e7ac2ab5bd0d92d51dd1d24a22d8fbc Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Wed, 11 Feb 2026 12:48:52 +0300 Subject: [PATCH] Emit Auto items only at group level, not top-level settings Real DCS files place SelectedItemAuto and OrderItemAuto exclusively inside StructureItem elements (groups, tables, charts), never at the top-level settings. Added -skipAuto switch to Emit-Selection and Emit-Order, applied at settings level. Co-Authored-By: Claude Opus 4.6 --- .../skd-compile/scripts/skd-compile.ps1 | 20 +++++++++++-------- docs/skd-dsl-spec.md | 4 ++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1 index 0f94a40d..f6828a3d 100644 --- a/.claude/skills/skd-compile/scripts/skd-compile.ps1 +++ b/.claude/skills/skd-compile/scripts/skd-compile.ps1 @@ -910,7 +910,7 @@ function Emit-GroupTemplates { # === Settings Variants === function Emit-Selection { - param($items, [string]$indent) + param($items, [string]$indent, [switch]$skipAuto) if (-not $items -or $items.Count -eq 0) { return } @@ -918,7 +918,9 @@ function Emit-Selection { foreach ($item in $items) { if ($item -is [string]) { if ($item -eq "Auto") { - X "$indent`t" + if (-not $skipAuto) { + X "$indent`t" + } } else { X "$indent`t" X "$indent`t`t$(Esc-Xml $item)" @@ -1053,7 +1055,7 @@ function Emit-Filter { } function Emit-Order { - param($items, [string]$indent) + param($items, [string]$indent, [switch]$skipAuto) if (-not $items -or $items.Count -eq 0) { return } @@ -1061,7 +1063,9 @@ function Emit-Order { foreach ($item in $items) { if ($item -is [string]) { if ($item -eq "Auto") { - X "$indent`t" + if (-not $skipAuto) { + X "$indent`t" + } } else { $parts = $item -split '\s+' $field = $parts[0] @@ -1409,9 +1413,9 @@ function Emit-SettingsVariants { $s = $v.settings - # Selection + # Selection (Auto items only belong at group level, not top-level settings) if ($s.selection) { - Emit-Selection -items $s.selection -indent "`t`t`t" + Emit-Selection -items $s.selection -indent "`t`t`t" -skipAuto } # Filter @@ -1419,9 +1423,9 @@ function Emit-SettingsVariants { Emit-Filter -items $s.filter -indent "`t`t`t" } - # Order + # Order (Auto items only belong at group level, not top-level settings) if ($s.order) { - Emit-Order -items $s.order -indent "`t`t`t" + Emit-Order -items $s.order -indent "`t`t`t" -skipAuto } # OutputParameters diff --git a/docs/skd-dsl-spec.md b/docs/skd-dsl-spec.md index 1c96ceef..50c57661 100644 --- a/docs/skd-dsl-spec.md +++ b/docs/skd-dsl-spec.md @@ -420,7 +420,7 @@ ``` - Строка → `SelectedItemField` -- `"Auto"` → `SelectedItemAuto` +- `"Auto"` → `SelectedItemAuto` (только на уровне группировок; на верхнем уровне settings игнорируется) - Объект с `field`/`title` → `SelectedItemField` с `lwsTitle` ### filter @@ -498,7 +498,7 @@ - `"Field"` → `OrderItemField`, `orderType=Asc` - `"Field desc"` → `OrderItemField`, `orderType=Desc` - `"Field asc"` → `OrderItemField`, `orderType=Asc` -- `"Auto"` → `OrderItemAuto` +- `"Auto"` → `OrderItemAuto` (только на уровне группировок; на верхнем уровне settings игнорируется) ### outputParameters