mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-20 18:19:43 +03:00
refactor(эмиттеры): одна формулировка на повторяющийся комментарий
Код нормализации пустого тега повторён в 24 местах, а комментарий к нему за время работы над #57 расплодился в шесть вариантов формулировки. Это то же расхождение копий, что и в коде, только в тексте: читающий не понимает, значима разница или нет. Сведено к одной паре формулировок — про сам тег с гардом и про запись через MemoryStream. Комментарий теперь начинается с ПРАВИЛА, а не с причины: раньше верхняя строка рассказывала, что here-string наследует LF от .ps1, и читалось это как «переводы строк берём из скрипта навыка» — тогда как правило обратное: создаём файл — пишем канон, правим существующий — наследуем его стиль. Два пояснения в cfe-borrow унификация чуть не стёрла, они возвращены: источником там служит OuterXml, а не XmlWriter, и нормализация стоит после вставки реквизитов, чтобы накрыть и их. Это причина местного отличия, а не дубль. Ссылки на ишью прорежены: #44/#46/#47 осталась по одной на файл — там, где правило формулируется, — и убрана оттуда, где была эхом. #57 в скриптах не было вовсе. Заодно выровнены две мелочи, найденные той же сверкой копий: interface-edit в py-порте не обрезал хвостовой перевод там, где PS обрезает (поведение совпадало, код — нет), а cf-edit нормализовал EOL инлайном вместо общей двухшаговой формы. Версии подняты в ОБОИХ портах всех затронутых навыков, включая те, где текстуально менялся только .ps1: номер версии в этом проекте читается как «одно и то же поведение», и разводить его из-за комментария нельзя. Паритет проверен — 69 пар, ноль расхождений. Windows 641/641 обоими портами. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4c64b97cec
commit
750ba3bb13
@@ -1,4 +1,4 @@
|
||||
# cfe-borrow v1.13 — Borrow objects from configuration into extension (CFE)
|
||||
# cfe-borrow v1.14 — Borrow objects from configuration into extension (CFE)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)][string]$ExtensionPath,
|
||||
@@ -917,9 +917,10 @@ function Borrow-Form {
|
||||
New-Item -ItemType Directory -Path $formXmlDir -Force | Out-Null
|
||||
}
|
||||
$formXmlFile = Join-Path $formXmlDir "Form.xml"
|
||||
# Куски формы берутся из OuterXml исходного документа, а он — как и XmlWriter —
|
||||
# отдаёт `<a />`; Конфигуратор пишет `<a/>`. Гард на CDATA/комментарии: только там
|
||||
# `>` не экранируется, и ` />` может быть содержимым, а не концом тега.
|
||||
# Пустой элемент: XmlWriter отдаёт `<a />`, Конфигуратор пишет `<a/>`. Гард на
|
||||
# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть
|
||||
# содержимым, а не концом тега.
|
||||
# Здесь источник не XmlWriter, а OuterXml исходного документа — спацовывает так же.
|
||||
$formXmlText = $formXmlSb.ToString()
|
||||
if ($formXmlText -notmatch '<!\[CDATA\[|<!--') { $formXmlText = [regex]::Replace($formXmlText, '(?<=\S) />', '/>') }
|
||||
[System.IO.File]::WriteAllText($formXmlFile, $formXmlText, $enc)
|
||||
@@ -1028,8 +1029,9 @@ function Register-FormInObject {
|
||||
$text2 = [System.Text.Encoding]::UTF8.GetString($bytes2)
|
||||
if ($text2.Length -gt 0 -and $text2[0] -eq [char]0xFEFF) { $text2 = $text2.Substring(1) }
|
||||
$text2 = $text2.Replace('encoding="utf-8"', 'encoding="UTF-8"')
|
||||
# Пустой элемент: XmlWriter пишет `<a />`, Конфигуратор — `<a/>`. Гард на CDATA/комментарии:
|
||||
# только там `>` не экранируется, и ` />` может быть содержимым, а не концом тега.
|
||||
# Пустой элемент: XmlWriter отдаёт `<a />`, Конфигуратор пишет `<a/>`. Гард на
|
||||
# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть
|
||||
# содержимым, а не концом тега.
|
||||
if ($text2 -notmatch '<!\[CDATA\[|<!--') { $text2 = [regex]::Replace($text2, '(?<=\S) />', '/>') }
|
||||
|
||||
$utf8Bom2 = New-Object System.Text.UTF8Encoding($true)
|
||||
@@ -1421,8 +1423,10 @@ function Merge-AttributesIntoObject {
|
||||
# Insert attributes before </ChildObjects>
|
||||
$text3 = $text3 -replace '</ChildObjects>', "${allAttrXml}`r`n`t`t</ChildObjects>"
|
||||
|
||||
# Пустой элемент: XmlWriter пишет `<a />`, Конфигуратор — `<a/>`. После вставки реквизитов,
|
||||
# чтобы накрыть и их. Гард на CDATA/комментарии: только там ` />` может быть содержимым.
|
||||
# Пустой элемент: XmlWriter отдаёт `<a />`, Конфигуратор пишет `<a/>`. Гард на
|
||||
# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть
|
||||
# содержимым, а не концом тега.
|
||||
# Стоит ПОСЛЕ вставки реквизитов, чтобы накрыть и их.
|
||||
if ($text3 -notmatch '<!\[CDATA\[|<!--') { $text3 = [regex]::Replace($text3, '(?<=\S) />', '/>') }
|
||||
|
||||
$utf8Bom3 = New-Object System.Text.UTF8Encoding($true)
|
||||
@@ -1889,8 +1893,9 @@ $memStream.Close()
|
||||
$text = [System.Text.Encoding]::UTF8.GetString($bytes)
|
||||
if ($text.Length -gt 0 -and $text[0] -eq [char]0xFEFF) { $text = $text.Substring(1) }
|
||||
$text = $text.Replace('encoding="utf-8"', 'encoding="UTF-8"')
|
||||
# Пустой элемент: XmlWriter пишет `<a />`, Конфигуратор — `<a/>`. Гард на CDATA/комментарии:
|
||||
# только там `>` не экранируется, и ` />` может быть содержимым, а не концом тега.
|
||||
# Пустой элемент: XmlWriter отдаёт `<a />`, Конфигуратор пишет `<a/>`. Гард на
|
||||
# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть
|
||||
# содержимым, а не концом тега.
|
||||
if ($text -notmatch '<!\[CDATA\[|<!--') { $text = [regex]::Replace($text, '(?<=\S) />', '/>') }
|
||||
|
||||
$utf8Bom = New-Object System.Text.UTF8Encoding($true)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# cfe-borrow v1.13 — Borrow objects from configuration into extension (CFE)
|
||||
# cfe-borrow v1.14 — Borrow objects from configuration into extension (CFE)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -1017,7 +1017,7 @@ def main():
|
||||
return
|
||||
|
||||
# newline="" => без трансляции: иначе CRLF молча схлопнется в LF при чтении
|
||||
# и файл будет переписан в LF (#44/#46/#47).
|
||||
# и файл будет переписан в LF.
|
||||
with open(obj_file, "r", encoding="utf-8-sig", newline="") as fh:
|
||||
obj_content = fh.read()
|
||||
|
||||
@@ -1078,7 +1078,7 @@ def main():
|
||||
|
||||
# Read existing object XML (needed for dedup + enrichment)
|
||||
# newline="" => без трансляции: иначе CRLF молча схлопнется в LF при чтении
|
||||
# и файл будет переписан в LF (#44/#46/#47).
|
||||
# и файл будет переписан в LF.
|
||||
with open(obj_file, "r", encoding="utf-8-sig", newline="") as fh:
|
||||
obj_content = fh.read()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user