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

Russian main discussion
  • Author
  • Message
Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

А также AStyle.

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

Post by CleriC »

Обновил AkelPad до версии 4.7.9, плагин Coder 10.2, Scripts 11.7.
При открытии файла в формате xml вылезают ошибки:
http://i42.fastpic.ru/big/2012/0917/9c/ ... 84459c.png
http://i42.fastpic.ru/big/2012/0917/da/ ... 28c8da.png
И не срабатывает подсветка кода. Раньше подсвечивал теги, текст в кавычках, скобки и пр. Сейчас все одним цветом.
При попытки отформатировать документ с помощью jsBeautifier.js выдает ошибки:
http://i42.fastpic.ru/big/2012/0917/a7/ ... e868a7.png
http://i42.fastpic.ru/big/2012/0917/5d/ ... 5f745d.png
и потом
http://i42.fastpic.ru/big/2012/0917/66/ ... df1f66.png
форматирование не работает.

Что делать?

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

Post by VladSh »

CleriC
Скопировать текст ошибки без названия переменных и воспользоваться поиском по форуму.

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

Post by CleriC »

С подсветкой разобрался.
Но jsBeautifier.js все равно отказывается работать.
Раньше я вызывал его так

Code: Select all

Call("Scripts::Main", 1, "jsBeautifier.js", "-unformattedTags=['li','td','p'] -maxChar=110")
Сейчас упростил, но даже так он не вызывается и выдает ошибку

Code: Select all

Call("Scripts::Main", 1, "jsBeautifier.js", "")

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

Post by Infocatcher »

Какая версия jsBeautifier.js?
Должно быть

Code: Select all

// version 0.2.1 - 2012-08-28
// Based on scripts from http://jsbeautifier.org/ [2012-08-28 03:42:01 UTC]
или

Code: Select all

// version 0.2.1 - 2012-08-28
// Based on scripts from http://jsbeautifier.org/ [2012-09-06 07:26:47 UTC]
(если обновить через Call("Scripts::Main", 1, "jsBeautifier.js", "-update=true"))

Какая версия плагина Scripts?
У меня на 11.7 работает.

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

Post by CleriC »

Все, разобрался, спасибо большое.
У меня была старая версия скрипта: // version 0.1.33 - 2012-03-08

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

Post by CleriC »

Заметил, что после форматирования xml файла с помощью jsBeautifier. Цветовая схема меняется с XML на HTML.
Почему такое может быть?

До:
http://i43.fastpic.ru/big/2012/0919/43/ ... c86743.png
После:
http://i43.fastpic.ru/big/2012/0919/4b/ ... 28ca4b.png

AkelPad до версии 4.7.9, плагин Coder 10.3, Scripts 11.7.
jsBeautifier // version 0.2.1 - 2012-08-28

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

Post by Infocatcher »

CleriC wrote:Заметил, что после форматирования xml файла с помощью jsBeautifier. Цветовая схема меняется с XML на HTML.
Почему такое может быть?
А было бы там сверху «<?xml version="1.0"?>», подсветило бы как XML.

Сейчас в любом случае принудительно выставляется синтаксическая тема.
Пожалуй, вот так: Add -setSyntax argument.

Только там сейчас сделаны и другие экспериментальные изменения, а тестировать (как и разбираться с вот этим) мне некогда. :)
Но попробовать уже можно: /master/jsBeautifier.js -> Raw

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

Post by CleriC »

Infocatcher wrote:Raw
Вот с этим скриптом тема не меняется. И мне нравится, что весь документ не выделяется, курсор остается где и был. Спасибо большое!

А как мне следить за изменениями в развитии jsBeautifier?
Просто запускать время от времени?

Code: Select all

Call("Scripts::Main", 1, "jsBeautifier.js", "-update=true")
Еще вопрос: как мне сделать, что бы конструкцию

Code: Select all

<link to="ШВ">ШВ60</link> с комплектом регистрации
скрипт не переносил так

Code: Select all

			<link
			to="ШВ">ШВ60</link>с комплектом регистрации
Переход на следующую строку после link явно ни к чему и пропадает пробел между закрывающим тегом (</link>) и словом, следующим за ним.

Еще, текст вида

Code: Select all

<li><a href="/docs/rp_spw1.pdf">Паспорт штампового опыта;</a></li>
форматируется как

Code: Select all

			<li>
				<a href="/docs/rp_spw1.pdf">Паспорт штампового опыта;</a>
			</li>
Если поставить настройку -unformattedTags=['td','li'], то скрипт совсем перестает форматировать этот тег и вместо

Code: Select all

<ul>
			<li>
				<a href="/docs/rp_spw1.pdf">Паспорт штампового опыта;</a>
			</li>
			<li>Протокол штампового опыта;</li>
			<li>Развитие деформаций во времени;</li>
</ul>
получается

Code: Select all

<ul>	<li>
				<a href="/docs/rp_spw1.pdf">Паспорт штампового опыта;</a>
			</li>
	<li>Протокол штампового опыта;</li>
	<li>Развитие деформаций во времени;</li>

</ul>
Какими-то настройками можно добиться чего-то такого?

Code: Select all

<ul>
			<li><a href="/docs/rp_spw1.pdf">Паспорт штампового опыта;</a></li>
			<li>Протокол штампового опыта;</li>
			<li>Развитие деформаций во времени;</li>
</ul>

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

Post by Infocatcher »

А как мне следить за изменениями в развитии jsBeautifier?
Как-то с централизованной проверкой обновлений скриптов пока никак. :(

Кстати, -update=true проверяет обновление только оригинального скрипта.
Просто мне надоело делать это вручную. :) А так и применение патчей автоматизируется.
А вот index.html не обновляется – он сильно изменен.
В общем, после такого обновления скрипт может сломаться – на этот случай автоматически создается резервная копия.

Для отслеживания можно подписаться на RSS:
https://github.com/einars/js-beautify/c ... aster.atom
https://github.com/Infocatcher/AkelPad_ ... aster.atom
Только там одна лента на весь репозиторий... А заводить по репозиторию на каждый скрипт – это как-то слишком. :D

Или можно проверять обновления, когда будет переставать работать. :)
как мне сделать, что бы конструкцию [...] скрипт не переносил
Можно попробовать увеличить -maxChar или выставить его в 0 для отключения переносов.

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

Post by Infocatcher »

Какими-то настройками можно добиться чего-то такого?
Видимо, нельзя.
Разве что -unformattedTags=["a"] делает нечто вроде. Только там, видимо, баг.

Или вот можно сделать -unformattedTags=[] и потом уже заменой поверх:
">\s+<a " => "><a "
"</a>\s+<" => "</a><"
(с галочкой «регулярные выражения»)

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

Post by CleriC »

Скрипт версии

Code: Select all

// version 0.2.2pre2 - 2012-09-19
// Based on scripts from http://jsbeautifier.org/ [2012-09-06 07:26:47 UTC]
вызываемый как

Code: Select all

Call("Scripts::Main", 1, "jsBeautifier.js", "-unformattedTags=['td','link'] -maxChar=0")
Из конструкции

Code: Select all

штампом <link to="ШВ">ШВ60</link> с комплектом регистрации
делает:

Code: Select all

штампом<link to="ШВ">ШВ60</link>с комплектом регистрации
то есть он убирает пробелы до и после тегов. Потом приходится править файл вручную (иначе будет косяк со ссылкой). Этого можно избежать?
Infocatcher wrote: Или вот можно сделать -unformattedTags=[] и потом уже заменой поверх:
">\s+<a " => "><a "
"</a>\s+<" => "</a><"
(с галочкой «регулярные выражения»)
Это где прописывать? Необходимо сам скрипт редактировать или просто как-то по особому его вызывать?

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

Post by Infocatcher »

CleriC wrote:то есть он убирает пробелы до и после тегов.
У меня, вроде, не убирает. Нужен пример побольше.

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

Code: Select all

ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()
?
У меня там 5.8.
CleriC wrote:Это где прописывать? Необходимо сам скрипт редактировать или просто как-то по особому его вызывать?
Вызывать с -unformattedTags=[], а потом делать замену или по Ctrl+H, или через SearchReplace.js (там можно шаблоны сохранять).
Только встроенная замена что-то глючит сейчас. :)

Через SearchReplace.js:
Что: (>)\s+(<a )|(</a>)\s+(<)
Чем: $1$2$3$4
[v] Регулярные выражения

Было:

Code: Select all

<ul>
	<li>
		<a href="/docs/rp_spw1.pdf">Паспорт штампового опыта;</a>
	</li>
	<li>
		<a href="/docs/rp_spw1.pdf">Паспорт штампового опыта;</a>
	</li>
	<li>Протокол штампового опыта;</li>
	<li>Развитие деформаций во времени;</li>
</ul>
Стало:

Code: Select all

<ul>
	<li><a href="/docs/rp_spw1.pdf">Паспорт штампового опыта;</a></li>
	<li><a href="/docs/rp_spw1.pdf">Паспорт штампового опыта;</a></li>
	<li>Протокол штампового опыта;</li>
	<li>Развитие деформаций во времени;</li>
</ul>

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

Post by CleriC »

Infocatcher wrote:
CleriC wrote:то есть он убирает пробелы до и после тегов.
У меня, вроде, не убирает. Нужен пример побольше.
Положил сюда свой xml файлик для примера.
Infocatcher wrote: И еще дело может быть в старой версии JScript.
Что выводит вот такой version.js:

Code: Select all

ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()
?
У меня там 5.8.
Как мне это сделать? Где именно прописать стоку что бы получить результат? Возможно у меня вовсе нет version.js? Вот список моих скриптов.
Infocatcher wrote:Через SearchReplace.js:
Что: (>)\s+(<a )|(</a>)\s+(<)
Чем: $1$2$3$4
[v] Регулярные выражения
Да, так получилось сделать, спасибо.

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

Post by VladSh »

CleriC wrote:Как мне это сделать? Где именно прописать стоку что бы получить результат? Возможно у меня вовсе нет version.js? Вот список моих скриптов.
А вот и вот (подробнее) инфа, как пользоваться скриптами.
Код скрипта, состоящий из одной строки, Infocatcher предоставил выше.
Post Reply