diff --git a/.claude/skills/mxl-compile/SKILL.md b/.claude/skills/mxl-compile/SKILL.md index 369acfd9..a4d62c4a 100644 --- a/.claude/skills/mxl-compile/SKILL.md +++ b/.claude/skills/mxl-compile/SKILL.md @@ -53,7 +53,8 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-compile.ps1" -J styles: { name: { font, align, valign, border, borderWidth, wrap, format } }, areas: [{ name, rows: [{ height, rowStyle, cells: [ { col, span, rowspan, style, param, detail, text, template } - ]}]}] + ]}]}], + namedAreas: [{ name, rows, cols }] } ``` @@ -64,9 +65,11 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-compile.ps1" -J - Тип заполнения определяется автоматически: `param` → Parameter, `text` → Text, `template` → Template - `rowspan` — объединение строк вниз (rowStyle учитывает занятые ячейки) - `empty` в строке — шорткат для N подряд пустых строк (`{ "empty": 3 }` = три `{}`) -- `name` у области необязателен: блок без имени — просто кусок сетки, именованную область он не создаёт +- `name` у области в `areas` необязателен: область без имени — просто кусок сетки, в макет как именованная она не попадёт +- `namedAreas` — области, которые не описываются диапазоном подряд идущих строк (полоса колонок, прямоугольник, ячейка). Тип не указывается: только `rows` → полоса строк, только `cols` → полоса колонок, обе оси → прямоугольник - Строку можно писать массивом ячеек — позиция из порядка, `col` не нужен: `"текст"`, `"{Имя}"` — параметр, `">"` — продолжить ячейку слева, `"|"` — сверху, `null` — пропуск колонки +Двухуровневая шапка массивами: ```json "rows": [ ["Вид", "Остаток", ">", "Итог"], diff --git a/.claude/skills/mxl-compile/reference/dsl-spec.md b/.claude/skills/mxl-compile/reference/dsl-spec.md index 391f846e..9d9ec0fe 100644 --- a/.claude/skills/mxl-compile/reference/dsl-spec.md +++ b/.claude/skills/mxl-compile/reference/dsl-spec.md @@ -79,7 +79,7 @@ | `columnWidths` | нет | `{}` | Ширины колонок. Ключи 1-based: `"1"`, `"3-14"`, `"5,7,9"`. Значения: число (абсолют) или `"Nx"` (множитель от defaultWidth, напр. `"2x"`, `"0.5x"`) | | `fonts` | нет | — | Именованные шрифты (если не задано, создаётся Arial 10) | | `styles` | нет | `{}` | Именованные стили | -| `areas` | да | — | Массив блоков строк (порядок = порядок в документе); имя у блока необязательно | +| `areas` | да | — | Массив областей — диапазонов подряд идущих строк (порядок = порядок в документе); имя необязательно | | `namedAreas` | нет | — | Именованные области, заданные координатами (см. ниже) | ## Шрифты (`fonts.`) @@ -114,11 +114,11 @@ | `name` | нет | Имя области для `Макет.ПолучитьОбласть("Имя")` | | `rows` | да | Массив строк | -Макет собирается из блоков строк, идущих подряд. Имя на блоке — сокращение: компилятор разворачивает его в именованную область типа «строки» на диапазон блока. **Блок без имени** — просто кусок сетки: так описываются строки, не принадлежащие ни одной именованной области. +Макет собирается из областей — диапазонов подряд идущих строк. Заданное здесь имя компилятор разворачивает в именованную область типа «строки» на диапазон этих строк. **Область без имени** — просто кусок сетки: так описываются строки, не принадлежащие ни одной именованной области. ## Именованные области координатами (`namedAreas[]`) -Для областей, которые блоком не выражаются: не привязанных к диапазону строк (полоса колонок, прямоугольник, ячейка) и пересекающихся с другими. +Для областей, которые диапазоном подряд идущих строк не описываются: полоса колонок, прямоугольник, ячейка, а также пересекающиеся с другими. | Поле | Обяз. | Описание | |------|:-----:|----------| diff --git a/docs/mxl-dsl-spec.md b/docs/mxl-dsl-spec.md index 54eba8ea..0f324756 100644 --- a/docs/mxl-dsl-spec.md +++ b/docs/mxl-dsl-spec.md @@ -79,7 +79,7 @@ | `columnWidths` | нет | `{}` | Ширины колонок. Ключи 1-based: `"1"`, `"3-14"`, `"5,7,9"`. Значения: число (абсолют) или `"Nx"` (множитель от defaultWidth, напр. `"2x"`, `"0.5x"`) | | `fonts` | нет | — | Именованные шрифты (если не задано, создаётся Arial 10) | | `styles` | нет | `{}` | Именованные стили | -| `areas` | да | — | Массив блоков строк (порядок = порядок в документе); имя у блока необязательно | +| `areas` | да | — | Массив областей — диапазонов подряд идущих строк (порядок = порядок в документе); имя необязательно | | `namedAreas` | нет | — | Именованные области, заданные координатами (см. ниже) | ## Шрифты (`fonts.`) @@ -114,11 +114,11 @@ | `name` | нет | Имя области для `Макет.ПолучитьОбласть("Имя")` | | `rows` | да | Массив строк | -Макет собирается из блоков строк, идущих подряд. Имя на блоке — сокращение: компилятор разворачивает его в именованную область типа «строки» на диапазон блока. **Блок без имени** — просто кусок сетки: так описываются строки, не принадлежащие ни одной именованной области. +Макет собирается из областей — диапазонов подряд идущих строк. Заданное здесь имя компилятор разворачивает в именованную область типа «строки» на диапазон этих строк. **Область без имени** — просто кусок сетки: так описываются строки, не принадлежащие ни одной именованной области. ## Именованные области координатами (`namedAreas[]`) -Для областей, которые блоком не выражаются: не привязанных к диапазону строк (полоса колонок, прямоугольник, ячейка) и пересекающихся с другими. +Для областей, которые диапазоном подряд идущих строк не описываются: полоса колонок, прямоугольник, ячейка, а также пересекающиеся с другими. | Поле | Обяз. | Описание | |------|:-----:|----------|