Форматтер кода XML и С++

Russian main discussion
  • Author
  • Message
Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Речь идет о запуске version.js ?
Дело в том, что я не вижу такого у себя ни здесь ни здесь.
Вот версии модулей.

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Infocatcher wrote: И еще дело может быть в старой версии JScript.
Что выводит вот такой version.js:

Code: Select all

ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()
?
У меня там 5.8.
Я создал файл version.js где написал вышеупомянутый код, но запуск такого скрипта ничего не дает (ничего не происходит). Что я делаю не так?

Image

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

CleriC wrote:но запуск такого скрипта ничего не дает
Ай, это я по-другому запускал и забыл добавить собственно вывод:

Code: Select all

WScript.Echo(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion());
CleriC wrote:Положил сюда свой xml файлик для примера.
Что-то меня на http://webdrive.reborn.ru/403.html посылает.

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Infocatcher wrote: Ай, это я по-другому запускал и забыл добавить собственно вывод:

Code: Select all

WScript.Echo(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion());
Image

Infocatcher wrote:Что-то меня на http://webdrive.reborn.ru/403.html посылает.
Положил на rghost.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Ага, теперь вижу. Это баг оригинального скрипта.
Как-то так:
Bugs with HTML and XML

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Infocatcher wrote:
Ага, теперь вижу. Это баг оригинального скрипта.
Как-то так:
Bugs with HTML and XML
Спасибо за отправленный баг-репорт. Будем ждать исправления.
Не могли бы вы написать в этой теме, когда выйдет поправленная версия скрипта?

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Потестил версию 0.2.2pre3. Пробелы до и после тегов все равно съедаются.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

CleriC
Не правил никто, вот и съедаются. :)

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Попробовал новую версию 0.2.3 от 2013-02-02.
Все равно проблемы остались :(

Offline
Posts: 13
Joined: Sat Oct 26, 2013 7:19 pm
Location: Russian

Post by Eric50 »

У меня astyle в конец отформатированного текста, выводит ошибки и предупреждения.

Обязательно следующее:
Cannot convert to multi-byte string, reverting to English
Даже не пойму, на что он ругается.
Тестовый сырец, сохранил в кодировке cp1251 и набил его только на латинице.

Поставил в команде ключик "--quiet", но не помогло.

А вообще, можно ли куда-нибудь перенаправить stder? "2> nul"?

Сейчас, запускаю через cmd-файл:

Code: Select all

@echo off
AStyle.exe --style=allman --pad-paren-in --unpad-paren --align-pointer=type --align-reference=type --add-brackets --convert-tabs --lineend=windows 2> "%temp%\AStyle.log"
Наверное надо на скрипт переделать?

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Я не знаю как написать на GitHub, напишу сюда.
Возможно, я не до конца разобрался в настройках, возможно — баги.
Версия jsBeautifier 0.2.7 - 2015-01-10
Параметры вызова:

Code: Select all

Call("Scripts::Main", 1, "jsBeautifier.js", "-unformattedTags=['td','link','li','link_row','b','i','a','h4'] -maxChar=95")
Форматирую текст, получаю:

Code: Select all

<p><b>1 Конфигурация ЗОНД – КОНТРОЛЛЕР К4</b>
		</p>

Code: Select all

<p><i>4-х канальные зонды А4 (с датчиком порового давления) поставляются по отдельным заявкам.</i>
		</p>

Почему </p> не в одной строке с <p>?

Code: Select all

<p>
			<h4>Технические характеристики контроллера ТЕСТ-К4.</h4>
		</p>
Почему обрамляющие теги <p> в разных строках?

Code: Select all

<p>ТЕКСТ ТЕКСТ ТЕКСТ
			без калибровки аппаратуры. <link_row to="ДОСМ 3-50">Динамометр ДОСМ 3–50У</link_row> и
			<link_row
			to="УСЗН.93.00.00.00-01">Устройство Т</link_row> предназначены для проверки работоспособности комплекта.
		</p>
Почему к тега <link_row to=...> параметр «to=» уехал на другую строку?
Тем не менее, в первой строке, где встречается этот тег — все нормально.

Уточнение.
На первый раз форматирует так:

Code: Select all

<p>ТЕКСТ ТЕКСТ ТЕКСТ
			<link_row
			to="РК.05.01.01">Радиокнопки РК-11</link_row>.
		</p>
Если нажать форматирование еще раз, получится так (нормально):

Code: Select all

<p>ТЕКСТ ТЕКСТ ТЕКСТ
			<link_row to="РК.05.01.01">Радиокнопки РК-11</link_row>.
		</p>

Code: Select all

<p><a href="/docs/ii03_test.pdf" target="_blank">Комплекты оборудования для статического зондирования грунтов серии ТЕСТ.</a>			Инженерные изыскания. Апрель 2008.</p>
Тут почему-то возникает много пробелов и знаков табуляции перед словом «Инженерные».

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

CleriC
Лучше исходные данные тоже приводить.
Прямо вот такое

Code: Select all

<p><b>1 Конфигурация ЗОНД – КОНТРОЛЛЕР К4</b>
      </p>
у меня не воспроизводится. Разве что там особо обрабатывается при наличии текста, вот так нормально:

Code: Select all

<x><y><z></z></y></x>
=>

Code: Select all

<x>
	<y>
		<z></z>
	</y>
</x>
А вот тут попытается не сломать текст:

Code: Select all

<x><y><z></z></y>text</x>
=>

Code: Select all

<x>
	<y>
		<z></z>
	</y>text</x>
Насчет переноса, видимо, -maxChar отрабатывает. И вместо последнего лучше -wrapLineLength использовать, из-за изменений в используемой библиотеке:

Code: Select all

        // backwards compatibility to 1.3.4
        if ((options.wrap_line_length === undefined || parseInt(options.wrap_line_length, 10) === 0) &&
                (options.max_char !== undefined && parseInt(options.max_char, 10) !== 0)) {
            options.wrap_line_length = options.max_char;
        }
А вот

Code: Select all

<p>ТЕКСТ ТЕКСТ ТЕКСТ
         <link_row
         to="РК.05.01.01">Радиокнопки РК-11</link_row>.
      </p>
у меня только в

Code: Select all

<p>ТЕКСТ ТЕКСТ ТЕКСТ
	<link_row to="РК.05.01.01">Радиокнопки РК-11</link_row>.
</p>
переделывает, дальше без изменений.
Может версия JScript влиять... Вроде, вот так можно определить, version.js:

Code: Select all

WScript.Echo(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion());

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Infocatcher

Code: Select all

WScript.Echo(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion());
Выдает 5.8.

-wrapLineLength буду тестировать

Вот файл, к которому я применяю форматирование.
Открываю файл, делаю

Code: Select all

Call("Scripts::Main", 1, "jsBeautifier.js", "-unformattedTags=['td','link','li','link_row','b','i','a','h4'] -maxChar=95")
Вопросы по строкам (после применения скрипта):
35: появляются 3 знака табуляции перед словами «Инженерные изыскания»
49-50, 96-97, 116-117: на новую строку переносится </p>
51-53 и 71-73: <p> и </p> в разных строках
112-113: параметр to тега <link_row уехал на новую строку
125: слишком длинная строка, 183 символа

ЗЫ С -wrapLineLength тоже самое.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

CleriC
Несмотря на то, что этот скрипт - лучшее, что я увидел и попробовал для причёсывания XML, все проблемы наверняка не удастся решить. Если интересно, можете посмотреть мои попытки использовать скрипт для FB2 отсюда и далее, только возможностями (ключами) скрипта обойтись не удалось и всё закончилось подобными дополнительными вызовами Multi_SR.js и добавлением AkelPad.ScriptNoMutex + обязательное условие: конец выделения должен быть не далее, чем между тегами </body> и <binary> (показать окончательный вариант и команду меню могу показать попозже).

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Раньше (пару версий как) думал, что случайность какая-то, теперь вижу, что вроде как поломалось.

Эти строки:

Code: Select all

-"Tidy форматирование XML" Call("Log::Output", 1, `"%a\AkelFiles\Tools\Tidy.exe" -utf8 -xml --indent auto --indent-spaces 3 --quiet yes --wrap 0 --show-errors 0`, "", "", "", 65001, 65001, 1052673)
-"Tidy форматирование HTML" Call("Log::Output", 1, `"%a\AkelFiles\Tools\Tidy.exe" -utf8 --indent auto --indent-spaces 3 --quiet yes --wrap 0 --show-errors 1`, "", "", "", 65001, 65001, 1052673)
не выводят сообщение в окошко Log::Output.
Сейчас текст файла полностью заменяется сообщением об ошибке, т.е. вставка производится в текущее окно редактирования.
Раньше текст с ошибками добавлялся в конец файла, и это происходило без прокрутки, - было непонятно, почему же ничего не происходит, но потом обнаруживалось, что запись была в этот же файл.

P.S. Tidy та же самая. Вышеуказанные строки вызова те же, что когда-то давал Instructor.

Подскажите пожалуйста, как поправить?
Post Reply