From f13fe140f0622e8e5cd7c023bf6421abb4ad3868 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Mon, 10 Aug 2026 18:06:20 +0300 Subject: [PATCH] =?UTF-8?q?docs(mxl-compile):=20=D0=B4=D0=BE=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=D1=82=D1=8C=20namedAreas=20=D0=B2=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=80=D1=82=D1=83=20DSL=20=D0=B8=20=D1=81=D0=B2=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D1=82=D0=B5=D1=80=D0=BC=D0=B8=D0=BD=D0=BE=D0=BB?= =?UTF-8?q?=D0=BE=D0=B3=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Перечитал инструкцию глазами модели, которая приходит делать макет: - в карте структуры отсутствовал ключ namedAreas — модель, которой нужна область из колонок (в печатных формах это обычное дело), из инструкции не узнала бы, что такое вообще выразимо. Карта верхнего уровня должна быть полной; - в одном предложении соседствовали «область» и «блок». Платформа знает только «область», второй термин появился по дороге — убран из инструкции и спеки; - пример строк-массивов висел без подводки. Co-Authored-By: Claude Opus 5 (1M context) --- .claude/skills/mxl-compile/SKILL.md | 7 +++++-- .claude/skills/mxl-compile/reference/dsl-spec.md | 6 +++--- docs/mxl-dsl-spec.md | 6 +++--- 3 files changed, 11 insertions(+), 8 deletions(-) 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[]`) -Для областей, которые блоком не выражаются: не привязанных к диапазону строк (полоса колонок, прямоугольник, ячейка) и пересекающихся с другими. +Для областей, которые диапазоном подряд идущих строк не описываются: полоса колонок, прямоугольник, ячейка, а также пересекающиеся с другими. | Поле | Обяз. | Описание | |------|:-----:|----------|