/mxl-decompile — Декомпилятор макета в DSL
MCP routing
- Preferred path: use MCP
unicatoolunica.viewпо адресу макета. - Не зови внутренние адаптеры напрямую: они спрятаны за MCP
unica. - Чтение не меняет исходники:
viewотвечает проекцией узла и его ревизией.
Макет — узел логического дерева: <набор>:<Вид>.<Имя>.Template.<Макет>. Узел
макета отдаёт именованные области, параметры и наборы колонок; ветвь Area
раскрывает одну область, а её тело — ячейки. Файлового селектора у чтения нет;
путь, пришедший снаружи (из диффа, лога сборки), переводит в адрес аварийный
unica.resolve.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.view",
"arguments": {
"at": "main:Report.Продажи.Template.ПФ_MXL_Продажи"
}
}
}
Одна область — адресом её ветви:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.view",
"arguments": {
"at": "main:Report.Продажи.Template.ПФ_MXL_Продажи.Area.Шапка"
}
}
}
Чего на поверхности нет
Обратной сборки макета в JSON-определение DSL нет: view отвечает своей
проекцией узла, а не форматом, который принимал бы обратный компилятор. DSL
ниже остаётся описанием формата для чтения, а не выходом инструмента. Если
задача требует ровно такого JSON — сообщи это как пробел контракта Unica MCP.
Правка макета идёт через unica.apply (mxl.set), см. mxl-compile.
JSON-схема DSL
Полная спецификация формата: ../../references/specs/mxl-dsl-spec.md (прочитать через Read tool).
Генерация имён
Скрипт автоматически генерирует осмысленные имена:
- Шрифты:
default,bold,header,small,italic— или описательные имена по свойствам - Стили:
bordered,bordered-center,bold-right,border-topи т.д. — по комбинации свойств
Детектирование rowStyle
Если в строке есть пустые ячейки (без параметров/текста) и все они имеют одинаковый формат — этот формат распознаётся как rowStyle, а пустые ячейки исключаются из вывода.
Адрес, а не путь
Имя набора даёт unica.view {}, адрес по имени объекта —
unica.search {corpus: "names"}, а путь, найденный иначе, переводит в адрес
аварийный unica.resolve. Файлового селектора у чтения нет вовсе: узел
адресуется логически.