mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-13 15:03:20 +03:00
feat(mxl-compile): короткая форма строки — массив ячеек
Строка, записанная массивом ("rows": [["А","Б","В"]]), молча превращалась в
пустую строку в обоих портах. Форма не выдумана: ровно так документированы
макеты в skd-compile, и привычка естественно переносится на табличный документ.
Масштаб потери был виден в самом репозитории — ПЯТЬ кейсов семейства mxl-*
написаны в этой форме и потому проверяли пустые макеты: снэпшот
lenient-key-case содержал единственную строку <empty>true</empty>. После правки
все пять снэпшотов наполнились ячейками, которые терялись.
Семантика повторяет skd-compile: позиция ячейки — индекс в массиве, ">"
продолжает ячейку слева (span), "|" — сверху (rowspan), null пропускает
колонку, "{Имя}" даёт параметр. Элемент можно записать и объектом, когда нужен
style или detail; col в нём запрещён — это смешение двух способов адресации.
Разворот идёт отдельным пред-проходом в обычные строки с явными col/span/rowspan,
поэтому остальной компилятор о короткой форме не знает.
Форма документирована — в отличие от прощающего пропуска col: модель пишет канон
соседнего навыка, и выравнивание двух табличных DSL убирает развилку. По каскаду
в SKILL.md только правило и пример, подробности и таблица ошибок — в спеке
(обе копии: docs/ и reference/ навыка).
Правка на ps1, зазеркалена в py: вывод портов совпадает байт в байт, decompile →
compile возвращает исходный XML байт в байт.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ccbbecbcf2
commit
6719d7e647
+37
-1
@@ -124,11 +124,47 @@
|
||||
|
||||
Строка без `cells` и `rowStyle` → пустая строка. `{ "empty": 3 }` эквивалентно трём `{}`.
|
||||
|
||||
### Короткая форма: строка массивом
|
||||
|
||||
Вместо объекта строка может быть массивом ячеек — позиция определяется порядком, `col` не указывается. Соглашения совпадают с макетами СКД (`/skd-compile`).
|
||||
|
||||
| Элемент | Значение |
|
||||
|---------|----------|
|
||||
| `"текст"` | Статический текст (`text`) |
|
||||
| `"{Имя}"` | Параметр (`param`) |
|
||||
| `">"` | Продолжение ячейки слева — увеличивает её `span` |
|
||||
| `"|"` | Продолжение ячейки сверху — увеличивает её `rowspan` |
|
||||
| `null` | Пустая колонка: позиция занята, ячейка не создаётся |
|
||||
| `{ ... }` | Обычная ячейка **без** `col`; нужна для `style`, `detail`, `template` |
|
||||
|
||||
```json
|
||||
"rows": [
|
||||
["Вид", "Остаток", ">", "Итог"],
|
||||
["|", "начало", "конец", "|"],
|
||||
["{Вид}", "{Нач}", "{Кон}", "{Итог}"]
|
||||
]
|
||||
```
|
||||
Здесь «Вид» и «Итог» объединены по вертикали на две строки, «Остаток» — по горизонтали на две колонки.
|
||||
|
||||
Ограничения короткой формы:
|
||||
- не задать `height` и `rowStyle` — это свойства строки, а не ячейки;
|
||||
- не выразить текст, совпадающий с `">"`, `"|"` или с шаблоном `"{...}"`;
|
||||
- `"|"` продолжает ячейку из предыдущей строки, только если её позиция известна явно (`col` задан или строка записана массивом).
|
||||
|
||||
Ошибки короткой формы (stderr, код возврата 1):
|
||||
|
||||
| Условие | Сообщение |
|
||||
|---------|-----------|
|
||||
| `">"` без ячейки слева | `Row shorthand: '>' has no cell to the left: area "…", row N, cell M` |
|
||||
| `"|"` без ячейки сверху | `Row shorthand: '|' has no cell above: area "…", row N, cell M` |
|
||||
| объектный элемент с `col` | `Row shorthand: cell object must not carry 'col': area "…", row N, cell M` |
|
||||
| элементов больше `columns` | `Row exceeds 'columns' (K): area "…", row N` |
|
||||
|
||||
## Ячейки (`cells[]`)
|
||||
|
||||
| Поле | Обяз. | По умолч. | Описание |
|
||||
|------|:-----:|-----------|----------|
|
||||
| `col` | да | — | Позиция колонки (1-based) |
|
||||
| `col` | да | — | Позиция колонки (1-based). В короткой форме строки не указывается — позиция берётся из порядка |
|
||||
| `span` | нет | `1` | Объединение по горизонтали (количество колонок) |
|
||||
| `rowspan` | нет | `1` | Объединение по вертикали (количество строк) |
|
||||
| `style` | нет | rowStyle | Стиль ячейки (переопределяет rowStyle) |
|
||||
|
||||
Reference in New Issue
Block a user