mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-15 02:14:57 +03:00
fix(form-compile): актуализация allowlist knownKeys (оформление + autoCmdBar)
Allowlist дрейфовал — element-level appearance-ключи (11 канонических + 12 рус.синонимов: textColor/цветтекста/font/шрифт/border/рамка/title*/footer*) читаются через Get-AppearanceValue и НЕ переименовываются, поэтому сыпали ложный warning «unknown key» для валидных свойств закрытого кластера Appearance. Решение самоподдерживающееся: union allowlist с самими структурами appearance — ps1 foreach по appearanceSpec/appearanceSynonyms.Keys после литерала; py доп. проверка `not in APPEARANCE_SPEC/APPEARANCE_SYNONYMS`. Не дрейфует при добавлении новых ключей/синонимов. + статический autoCmdBar. Проверено: appearance-ключи (canonical + рус.синонимы) не предупреждают, реальные опечатки (textColorr/bogusKey) по-прежнему ловятся — оба рантайма. Регресс 36/36 ps1+py. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.72 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.73 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -2468,7 +2468,13 @@ function Emit-Element {
|
||||
"src"=1;"valuesPicture"=1;"loadTransparent"=1;"headerPicture"=1;"footerPicture"=1
|
||||
# cmdBar-specific
|
||||
"autofill"=1
|
||||
# AutoCommandBar-маркер (autofill heuristic) на элементе/таблице
|
||||
"autoCmdBar"=1
|
||||
}
|
||||
# Оформление (цвета/шрифты/граница) — авто-регистрация из самих структур, чтобы allowlist
|
||||
# не дрейфовал при добавлении новых ключей/синонимов. Канонические + forgiving-синонимы.
|
||||
foreach ($k in $script:appearanceSpec.Keys) { $knownKeys[$k] = 1 }
|
||||
foreach ($k in $script:appearanceSynonyms.Keys) { $knownKeys[$k] = 1 }
|
||||
foreach ($p in $el.PSObject.Properties) {
|
||||
if ($p.Name -like '_*') { continue } # внутренние маркеры (напр. _dynList)
|
||||
if (-not $knownKeys.ContainsKey($p.Name)) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# form-compile v1.72 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.73 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import copy
|
||||
@@ -1795,6 +1795,8 @@ KNOWN_KEYS = {
|
||||
"autoRefreshPeriod", "choiceFoldersAndItems", "restoreCurrentRow", "showRoot",
|
||||
"allowRootChoice", "updateOnDataChange", "allowGettingCurrentRowURL",
|
||||
"userSettingsGroup", "rowsPicture",
|
||||
# AutoCommandBar-маркер (autofill heuristic) на элементе/таблице
|
||||
"autoCmdBar",
|
||||
}
|
||||
|
||||
# picture/picField — НИЗКИЙ приоритет: 'picture' это и тип (PictureDecoration), и свойство-иконка
|
||||
@@ -2819,11 +2821,13 @@ def emit_element(lines, el, indent, in_cmd_bar=False):
|
||||
print("WARNING: Unknown element type, skipping", file=sys.stderr)
|
||||
return
|
||||
|
||||
# Validate known keys (внутренние маркеры на _ пропускаем)
|
||||
# Validate known keys (внутренние маркеры на _ пропускаем). Оформление (цвета/шрифты/граница)
|
||||
# проверяем против самих структур appearance — канонические ключи + forgiving-синонимы, чтобы
|
||||
# allowlist не дрейфовал при добавлении новых.
|
||||
for p_name in el.keys():
|
||||
if p_name.startswith('_'):
|
||||
continue
|
||||
if p_name not in KNOWN_KEYS:
|
||||
if p_name not in KNOWN_KEYS and p_name not in APPEARANCE_SPEC and p_name not in APPEARANCE_SYNONYMS:
|
||||
print(f"WARNING: Element '{el.get(type_key, '')}': unknown key '{p_name}' -- ignored. Check SKILL.md for valid keys.", file=sys.stderr)
|
||||
|
||||
name = get_element_name(el, type_key)
|
||||
|
||||
Reference in New Issue
Block a user