mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-14 18:04:58 +03:00
feat(skd): v8ui:Line + nested side-styles в appearance
conditionalAppearance может содержать СтильГраницы со сложным value:
<dcscor:value xsi:type="v8ui:Line" width="0" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">None</v8ui:style>
</dcscor:value>
+ nested <dcscor:item> для side-стилей (СтильГраницы.Сверху/.Снизу/.Слева/.Справа),
каждый со своим v8ui:Line value и опц. <dcscor:use>false</dcscor:use>.
Раньше теряли всю структуру и эмитили <value xsi:type="xs:string">None</value>.
DSL form B (выбранный пользователем) — Line как top-level плоский объект:
"СтильГраницы": {
"@type": "Line", "width": 0, "gap": false, "style": "None",
"items": {
"СтильГраницы.Сверху": {
"value": { "@type": "Line", "width": 1, "gap": false, "style": "Solid" },
"use": false
}
}
}
Nested items — универсальный wrapper {value, use?, items?} (как у outputParameters).
Эмитятся как siblings <dcscor:item> внутри родительского <dcscor:item> (после
закрытия родительского <dcscor:value>).
decompile: Read-AppearanceValueNode распознаёт Line и возвращает inline объект;
Get-SettingsAppearance читает nested dcscor:item children и собирает их в items.
compile (PS+Py): emit_appearance_value расширен — Line ветка + рекурсивный
вызов для items siblings.
Sample30 total: 767 → 729 строк diff (-38).
This commit is contained in:
@@ -763,6 +763,31 @@ Wrapper эмитится только при наличии extra-полей; п
|
||||
```
|
||||
Все атрибуты исходного XML сохраняются — для bit-perfect.
|
||||
|
||||
#### Граница (v8ui:Line) в appearance
|
||||
|
||||
Граница — объект с маркером `@type: "Line"` (атрибуты `width`/`gap` и inner `<v8ui:style>` сериализуются inline):
|
||||
```json
|
||||
"СтильГраницы": { "@type": "Line", "width": 0, "gap": false, "style": "None" }
|
||||
```
|
||||
|
||||
Стороны (`СтильГраницы.Сверху/.Снизу/.Слева/.Справа`) — nested SettingsParameterValue, кладутся в `items` (как у outputParameters wrapper):
|
||||
```json
|
||||
"СтильГраницы": {
|
||||
"@type": "Line", "width": 0, "gap": false, "style": "None",
|
||||
"items": {
|
||||
"СтильГраницы.Сверху": {
|
||||
"value": { "@type": "Line", "width": 1, "gap": false, "style": "Solid" },
|
||||
"use": false
|
||||
},
|
||||
"СтильГраницы.Снизу": {
|
||||
"value": { "@type": "Line", "width": 1, "gap": false, "style": "Double" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Top-level Line хранится **плоско** (`@type`/`width`/`gap`/`style` + `use?`/`items?` на одном уровне). Nested items используют универсальный wrapper `{ value, use? }` — у `value` тип любой (Line/Font/color/text). Значения `style`: `None`, `Solid`, `Double`, `LargeDashed`, `SmallDashed`, `Dotted` и т.п. (значения `v8ui:SpreadsheetDocumentCellLineType`).
|
||||
|
||||
### dataParameters
|
||||
|
||||
#### Автогенерация
|
||||
|
||||
Reference in New Issue
Block a user