mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-15 07:49:01 +03:00
fix(mxl-compile,mxl-decompile): висячие ссылки на стиль и культурная сортировка
Два дефекта, найденных при сведении портов. Стиль, на который ссылалась только дополнительная колоночная раскладка, отсекался как неиспользуемый: проверка смотрела в result, а columnSets попадает туда ПОЗЖЕ неё. Ссылка оставалась висячей — 5 макетов пилота из 40 указывали на стиль, которого в styles нет. Берём стили из самих раскладок. Именованные элементы платформа хранит отсортированными по имени ординально. ps1 сортировал их Sort-Object -CaseSensitive, а он всё равно сравнивает по текущей культуре — комментарий рядом сам об этом предупреждал. На кириллице порядок расходился с py-портом (4800 строк разницы на одном макете). Сортируем по ключу из кодов символов: в нём только 0-9A-F, культура его переупорядочить не может. Порты сошлись: JSON декомпиляторов совпадает на всех 40 макетах пилота (было 26 расхождений), собранный XML — на 39 из 40 (было 20 расхождений). Остаток — один макет, где расходятся компиляторы: ps1 подставляет faceName="Arial" height="10" там, где py пишет пустой шрифт. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
c11f4837fd
commit
6619a4e7ad
@@ -1,4 +1,4 @@
|
||||
# mxl-compile v1.37 — Compile 1C spreadsheet from JSON
|
||||
# mxl-compile v1.38 — Compile 1C spreadsheet from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -1576,8 +1576,14 @@ foreach ($m in $merges) {
|
||||
# с несколькими элементами иного порядка нет ни разу. Сортировка регистронезависимая и
|
||||
# ординальная — Sort-Object брать нельзя, он сортирует по текущей культуре и на кириллице
|
||||
# даст другой порядок. NB: имён с «ё» в выборке не встретилось, этот случай не проверен.
|
||||
$sortedNamedItems = @($namedItems | Sort-Object -Property @{ Expression = { $_.Name.ToLowerInvariant() } } `
|
||||
-CaseSensitive)
|
||||
# Sort-Object сортирует по текущей культуре даже с -CaseSensitive, поэтому сортируем по
|
||||
# ключу из кодов символов: в нём только 0-9A-F, и культурные правила его переупорядочить
|
||||
# не могут. Прежний вариант давал на кириллице не тот порядок, что py-порт.
|
||||
function Get-OrdinalKey {
|
||||
param([string]$name)
|
||||
return (($name.ToLowerInvariant().ToCharArray() | ForEach-Object { '{0:X4}' -f [int]$_ }) -join '')
|
||||
}
|
||||
$sortedNamedItems = @($namedItems | Sort-Object -Property @{ Expression = { Get-OrdinalKey $_.Name } })
|
||||
foreach ($ni in $sortedNamedItems) {
|
||||
# Тип области выводится из указанных осей, как в ТабличныйДокумент.Область():
|
||||
# нет колонок → полоса строк, нет строк → полоса колонок, обе → прямоугольник.
|
||||
|
||||
Reference in New Issue
Block a user