mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-26 21:19:42 +03:00
fix(form-decompile,form-compile): whitespace-presentation choiceList + SpecialTextInputMode (кластер RadioButtonField>Presentation)
(1) Presentation элемента <ChoiceList> (переключатель / поле ввода) с whitespace-only контентом (<v8:content> </v8:content>, пробел) терялась: Decompile-ChoiceList читал presentation через Get-LangText → "" (суппресс-маркер) → компилятор эмитил пустой <Presentation/>. Фикс: Get-LangText → Get-LangTextWS (тот же корень, что был у Attribute>Title; декомпилятор-only — Emit-ChoicePresentation " " уже умеет, IsNullOrEmpty пропускает пробел в контент-ветку). Кластер снова раздут harness-мис-атрибуцией: одна реальная whitespace-потеря на форму, generic строки-обёртки (<Presentation>/ <v8:item>/<v8:lang>ru) сыпались ложным LOST под соседними элементами. (2) SpecialTextInputMode (Email/PhoneNumber — моб. спец-режим ввода input) → GENERIC_SCALARS (компилятор ps1+py, декомпилятор ps1), листовой enum pass-through. Выборка 3 формы (Новости/ФормаПросмотраНовостейРабочийСтол, МастерПереходаВОблако, ПеремещениеОС/ФормаДокумента): match 0→3, TOTAL→0. Регресс 43/43 (ps1+py). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
e127dfcf3d
commit
8631026259
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.148 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.149 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -3243,6 +3243,8 @@ $script:genericScalars = @(
|
||||
# Равная ширина элементов (check/radio) / высота заголовка пункта (radio)
|
||||
@{ Tag='EqualItemsWidth'; Key='equalItemsWidth'; Kind='bool' }
|
||||
@{ Tag='ItemTitleHeight'; Key='itemTitleHeight'; Kind='value' }
|
||||
# Спец-режим ввода текста (input, моб.: Email/PhoneNumber/...) — листовой enum-скаляр
|
||||
@{ Tag='SpecialTextInputMode'; Key='specialTextInputMode'; Kind='value' }
|
||||
)
|
||||
|
||||
function Emit-GenericScalars {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# form-compile v1.148 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.149 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import copy
|
||||
@@ -3353,6 +3353,8 @@ GENERIC_SCALARS = [
|
||||
# Равная ширина элементов (check/radio) / высота заголовка пункта (radio)
|
||||
('EqualItemsWidth', 'equalItemsWidth', 'bool'),
|
||||
('ItemTitleHeight', 'itemTitleHeight', 'value'),
|
||||
# Спец-режим ввода текста (input, моб.: Email/PhoneNumber/...) — листовой enum-скаляр
|
||||
('SpecialTextInputMode', 'specialTextInputMode', 'value'),
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.123 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.124 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -1581,6 +1581,8 @@ $GENERIC_SCALARS = @(
|
||||
# Равная ширина элементов (check/radio) / высота заголовка пункта (radio)
|
||||
@{ Tag='EqualItemsWidth'; Key='equalItemsWidth'; Kind='bool' }
|
||||
@{ Tag='ItemTitleHeight'; Key='itemTitleHeight'; Kind='value' }
|
||||
# Спец-режим ввода текста (input, моб.: Email/PhoneNumber/...) — листовой enum-скаляр
|
||||
@{ Tag='SpecialTextInputMode'; Key='specialTextInputMode'; Kind='value' }
|
||||
)
|
||||
|
||||
# Захват generic-скаляров. Специфичная обработка (если ключ уже задан) — побеждает.
|
||||
@@ -1658,7 +1660,7 @@ function Decompile-ChoiceList {
|
||||
# Presentation: непустой → текст/мультиязык; пустой <Presentation/> → "" — суппресс-маркер,
|
||||
# подавляет авто-вывод компилятора (иначе компилятор додумает presentation из значения).
|
||||
if ($presNode) {
|
||||
$p = Get-LangText $presNode
|
||||
$p = Get-LangTextWS $presNode # восстановление значимого пробела (whitespace-presentation)
|
||||
if ($null -ne $p -and $p -ne '') { $ci['presentation'] = $p } else { $ci['presentation'] = '' }
|
||||
}
|
||||
[void]$items.Add($ci)
|
||||
|
||||
Reference in New Issue
Block a user