Scripts discussion (3)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Skif_off wrote:Не совсем понял, сейчас выделяю

Code: Select all

строка 1
строка 2
и после работы скрипта получаю

Code: Select all

<tag>строка 1
строка 2</tag>
а хотелось бы

Code: Select all

<tag>строка 1</tag>
<tag>строка 2</tag>
.
Хм, и часто такое надо? У меня-то просто подобной необходимости не возникало, а разово как раз заменой можно. И, кстати, что с пробелами в начале строк делать?

Skif_off wrote:Почему jsBeautifier.js может не запускаться? Команда

Code: Select all

 Call("Scripts::Main", 1, "jsBeautifier.js", `-unformattedTags=["binary","p"]   -wrapLineLength=1000000`)
может запуститься после перезапуска Akelpad, а может и нет, ошибок нет. От размера файла не зависисит.
Странно. С разрабатываемой версией тоже? Правда, там разве что вот это могло хоть как-то влиять. :?
Еще можно добавить для проверки вот так:

Code: Select all

if(hMainWnd && (typeof AkelPad.IsInclude == "undefined" || !AkelPad.IsInclude())) {
	if(update)
		selfUpdate();
	else {
		var res;
		WScript.Echo(WScript.ScriptName); // <--
, чтобы убедиться, что скрипт вообще запускается.

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

Post by Skif_off »

Infocatcher wrote:Хм, и часто такое надо? У меня-то просто подобной необходимости не возникало, а разово как раз заменой можно.
Согласен, поторопился я, Esc- последовательностями наловчился :)
Infocatcher wrote:С разрабатываемой версией тоже?
Попробовал та же история, причем скрипт все-таки запускается - в диспетчере задач AkelPad.exe грузит проц на 24-25%.
Такой момент: если все-таки отработает на файле, где спотыкался, то времени займет ~ в 2-3 раза меньше, чем жду, т.е я не закрываю вкладку раньше, чем надо.
Сейчас пришло в голову, что, кажется, началось, когда добавил параметры. Погоняю скрипт, может дам больше деталей.

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

Post by Skif_off »

Ппц какой-то: по одному файлу - нормально обрабатывается; открываю сразу полтора десятка (без внесения изменений), минимум на одном затык, обычно на 2-3, собрался написать - подряд два файла по одному не обрабатываются (после 3-5 перезапуском AkelPad внезапно отработали).
Не понимаю, в чем дело, зато заметил, что параметры меняют вид:

Code: Select all

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

<section>
	<title>
		<p>2 Общая структура документа. Кодировки</p>
	</title>
	<p>FB2-документ состоит из объявления XML и корневого элемента <FictionBook>. То есть выглядит это так:</p>
	<empty-line/>
	<p><code><?xml version="1.0" encoding="windows-1251"?></code>
	</p>
	<p><code><FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"</code>
	</p>
	<p><code>  xmlns:l="http://www.w3.org/1999/xlink"></code>
	</p>
	<p><code>  ...</code>
	</p>
	<p><code></FictionBook></code>
	</p>
	<empty-line/>
	<p>Как видно, в перв...</p>
</section>

________________________________________________
-"" Call("Scripts::Main", 1, "jsBeautifier.js", `-unformattedTags=["binary"]`)

<section>
	<title>
		<p>2 Общая структура документа. Кодировки</p>
	</title>
	<p>FB2-документ состоит из объявления XML и корневого элемента <FictionBook>. То есть выглядит это так:</p>
	<empty-line/>
	<p>
		<code><?xml version="1.0" encoding="windows-1251"?></code>
	</p>
	<p>
		<code><FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"</code>
	</p>
	<p>
		<code>xmlns:l="http://www.w3.org/1999/xlink"></code>
	</p>
	<p>
		<code>...</code>
	</p>
	<p>
		<code></FictionBook></code>
	</p>
	<empty-line/>
	<p>Как видно, в перв...</p>
</section>
, непонятно, каким боком.

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

Post by Infocatcher »

Skif_off wrote:зато заметил, что параметры меняют вид
Для отключения надо передавать в явном виде пустой список (-unformattedTags=[]), иначе работают умолчания, в которых есть 'code'.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Skif_off wrote:Можно ли юзать RegExpTestJS.js для теста вообще, а не только JavaScript?
В JavaScript синтаксис вроде PCRE.
Regular expression syntax only for JScript: http://msdn.microsoft.com/en-us/library ... 84%29.aspx

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

Post by Skif_off »

Infocatcher
Прошу прощения, не дошло :) Нужно, чтобы скрипт не трогал <binary>...</binary> и оставлял <p>...</p> и <v>...</v> на новой строке, не трогая ничего внутри, этого можно добиться?

Вот так

Code: Select all

Call("Scripts::Main", 1, "jsBeautifier.js", `-unformattedTags=[] -wrapLineLength=1000000`)
из <p>...</p> выносит на новую строку
<a l:href="#n_1" type="note">[1]</a>, <code>...</code>, <emphasis>...</emphasis>, <strong>...</strong>, при этом грохается пробел после закрывающего (если есть).

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

kadvlad wrote:*возможно, высота строк немного "плотная", но это уже придирки..
В версии TabSwitch.js v3.2 добавлен аргумент "LineGap".

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

FindReplaceEx.js
Updated: regular expressions help for AkelPad. 4.8.9.
Added: scaling dialog window to DPI of screen.

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

Post by Infocatcher »

Skif_off wrote:Нужно, чтобы скрипт не трогал <binary>...</binary> и оставлял <p>...</p> и <v>...</v> на новой строке, не трогая ничего внутри, этого можно добиться?

Вот так

Code: Select all

Call("Scripts::Main", 1, "jsBeautifier.js", `-unformattedTags=[] -wrapLineLength=1000000`)
из <p>...</p> выносит на новую строку
<a l:href="#n_1" type="note">[1]</a>, <code>...</code>, <emphasis>...</emphasis>, <strong>...</strong>, при этом грохается пробел после закрывающего (если есть).
Хм, вроде, или в -unformattedTags что-нибудь из этого добавить, или никак... :?

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

Post by Skif_off »

Infocatcher
Так и подумал, погонял, вроде так

Code: Select all

-"jsBeautifier (FB2)" Call("Scripts::Main", 1, "jsBeautifier.js", `-unformattedTags=["binary","p","v","subtitle"] -wrapLineLength=0`)
получается корректно. С -wrapLineLength=1000000 как-то не то временами.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

AkelPadMethodsView.js
Fixed: does not display the header - Scripts plugin version.

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

Post by VladSh »

Infocatcher
По скрипту insertTag.js.
Ценность его для меня в автоопределении, т.е. забиваешь в Hotkeys-плагин что-то типа:

Code: Select all

Call("Scripts::Main", 1, "insertTag.js", `-bbcode=-1 -xmlExts="[sxh]tml?|mht(ml)?" -tag="i"`)
и чтобы оно автоматом подставляло нужный тэг.

Всё было хорошо до того как не стал активно редактировать fb2... а там курсив это emphasis, жирный - strong...
Можно ли как-то обойтись "малой кровью", чтобы это скрипт сам анализировал? Как по мне, то можно было бы такие случаи вынести в файлик insertTag.ini. Короче, главное, чтобы была одна комбинация клавиш (на курсив, к примеру) и автоопределение типа файла.

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

Post by Infocatcher »

VladSh wrote:Всё было хорошо до того как не стал активно редактировать fb2... а там курсив это emphasis, жирный - strong...
Можно ли как-то обойтись "малой кровью", чтобы это скрипт сам анализировал? Как по мне, то можно было бы такие случаи вынести в файлик insertTag.ini. Короче, главное, чтобы была одна комбинация клавиш (на курсив, к примеру) и автоопределение типа файла.
Мне пока подумалось, что раз -xmlExts в аргументах, то и это надо туда же, а то как-то неконсистентно будет. :)
Пока что вот такое придумалось:

Code: Select all

Call("Scripts::Main", 1, "insertTag.js", `-bbcode=-1 -tag="%%T" -tagExts='{"": "i", "fb2|xhtml?": "em"}'`)
И там перечисление вида "": "по_умолчанию", "какой-то|шаблон": "какой-то_тэг", ...
Текущая версия: insertTag.js (изменения).

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

Post by Skif_off »

VladSh
В чем преимущество скрипта перед

Code: Select all

"<empty-line/>" Insert("<empty-line/>")
SEPARATOR
"<p>" Insert("<p>\s</p>", 1)
"<v>" Insert("<v>\s</v>", 1)
"<strong>" Insert("<strong>\s</strong>", 1)
"<emphasis>" Insert("<emphasis>\s</emphasis>", 1)
"<code>" Insert("<code>\s</code>", 1)
"<text-author>" Insert("<text-author>\s</text-author>", 1)
"<subtitle>" Insert("<subtitle>\s</subtitle>", 1)
SEPARATOR
"<section>" Insert("<section>\n\s\n</section>", 1)
"<title>" Insert("<title>\n\s\n</title>", 1)
"<cite>" Insert("<cite>\n\s\n</cite>", 1)
"<epigraph>" Insert("<epigraph>\n\s\n</epigraph>", 1)
"<poem>" Insert("<poem>\n\s\n</poem>", 1)
"<stanza>" Insert("<stanza>\n\s\n</stanza>", 1)
?

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

Post by VladSh »

Skif_off wrote:В чем преимущество скрипта?
У меня таких меню валом, но я их не хочу по этой причине:
VladSh wrote:чтобы была одна комбинация клавиш (на курсив, к примеру) и автоопределение типа файла
Infocatcher
Вроде на этом примере работает. Спасибо!
Но надо бы покатать чуток.
Locked