Scripts discussion (4)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

beotiger wrote:но где она?
Было недавно, просто фича не вынесена в GUI.

Offline
Posts: 53
Joined: Wed Dec 09, 2015 6:33 pm

Post by beotiger »

Skif_off да, я же говорю, пробовал, но что-то не срослось сразу, было полгода назад. Т.к. фича требовалась не особо часто, поэтому не парился, а когда припёрло, захотелось.

Справедливости ради надо отметить, что команду

Code: Select all

Call("Scripts::Main", 1, "converter.js", `-mode=2 -type="quotedprintable" -dialog=false -onlySelected=true`)
так и не удалось заставить работать над выделенным текстом, хотя если пошаманить над самим converter.js, можно добиться вывода раскодированного текста в окно предпросмотра.

Но, согласитесь, т.к. функция не вынесена в GUI, большинство пользователей о ней так и не узнает, не всякий же будет рыться по форуму или по гитхабу.

А вообще, converter.js мощная штука, кстати, я оттуда взял 2 полезные функции для quoted-printable.js: convertFromUnicode и convertToUnicode.

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

Post by Skif_off »

beotiger wrote:Справедливости ради надо отметить, что команду

Code: Select all

Call("Scripts::Main", 1, "converter.js", `-mode=2 -type="quotedprintable" -dialog=false -onlySelected=true`)
так и не удалось заставить работать над выделенным текстом
Не знаю, что может быть, у меня работает. К слову - всегда, а ваш как-то лажанул с KOI-8R, причём как-то странно, не левые символы, а тупо маленькие квадратики и всё (шрифт Liberation Mono).
beotiger wrote:Но, согласитесь, т.к. функция не вынесена в GUI, большинство пользователей о ней так и не узнает, не всякий же будет рыться по форуму или по гитхабу.
Я соглашусь, потому что знаю, что в какой-то мере был инициатором добавления этой фичи :) С другой стороны, поиск по форуму работает и теперь есть сразу пара готовых вариантов.
beotiger wrote:Т.к. фича требовалась не особо часто, поэтому не парился, а когда припёрло, захотелось.
Вы ещё мой "припёртый" вариант не видели :))

Offline
Posts: 53
Joined: Wed Dec 09, 2015 6:33 pm

Post by beotiger »

Skif_off wrote:Не знаю, что может быть, у меня работает.
Версия converter.js которая у меня:

Code: Select all

// (c) Infocatcher 2010-2015
// Version: 0.2.5pre - 2015-03-07
// Author: Infocatcher
Какая у Вас версия и какую именно команду использовали для раскодирования выделенного текста?

Насчёт возможных крякозябр - это не должно зависеть от кодировки, т.к. quoted-printable.js распознаёт текущую кодировку автоматически, как и converter.js
Но крякозябры могут проявляться при выборе частичной строки, например, имеем такую строку в кодировке quoted-printable:

Code: Select all

=D0=BD=D0=
=B0 =D0=BD=D0=B0=D1=88=D0=B5=D0=BC =D1=81=D0=B0=D0=B9=D1=82=D0=B5
Делаем quoted-printable decode, получается:

Code: Select all

на нашем сайте 
Если выберем часть строки без первых 3 символов:

Code: Select all

=BD=D0=
=B0 =D0=BD=D0=B0=D1=88=D0=B5=D0=BC =D1=81=D0=B0=D0=B9=D1=82=D0=B5
Делаем quoted-printable decode:

Code: Select all

�а нашем сайте 
В любом наверное quoted-printable конвертере по идее мы должны получить такую крякозябру. Я проверил ч/з PHP-функцию quoted_printable_decode и ещё в паре online decoder'ов.

Offline
Posts: 6
Joined: Wed Dec 07, 2016 1:27 pm

Post by lelik »

Добрый день!
А можно сделать так, чтобы результат в Calculator.js ?
выдавал в одном окошке:

Code: Select all

nResult
nResult.toString(16)
nResult.toString(2)
т.е. в десятеричной, шестнадцатеричной и двоичной С.И.

Offline
Posts: 53
Joined: Wed Dec 09, 2015 6:33 pm

Post by beotiger »

lelik, да, легко.
Отредактируйте скрипт Calculator.js (в папке ...\AkelPad\AkelFiles\Plugs\Scripts\) - измените функцию Trace на код показанный ниже:

Code: Select all

function Trace(nResult, pLabel)
{
  var nValue, sShow;

  if (bHex)
  {
    if (nResult < 0) nResult=(0xFFFFFFFF + 1) + nResult;
    nResult="0x" + nResult.toString(16).toUpperCase();
    sShow = nResult;
  }
  else {
  	sShow = nResult + ', x' + nResult.toString(16) + ', b' + nResult.toString(2);
  }
  if (nValue=AkelPad.InputBox(hMainWnd, WScript.ScriptName, pLabel, sShow))
    return parseInt(nValue);
  return nResult;
}


Тут мы добавили переменную sShow, которую выводим в качестве результата. Если у нас не шестеричный вывод, то добавляем к nResult строки в HEX и BIN формате в виде xHEXVALUE и bBINVALUE (всё ч/з запятую, если формат не нравится, измените на свой).

Offline
Posts: 6
Joined: Wed Dec 07, 2016 1:27 pm

Post by lelik »

хотелось чтобы в разных полях были результаты:

Dec: 65297
Hex: 0xFF11
Bin: 1111111100010001

Offline
Posts: 171
Joined: Thu Dec 01, 2011 11:15 pm
Location: Россия

Post by LonerD »

FeyFre
Скрипт History.js частично не работает под Windows 10 x64 Home.
Например, не показывает окно:
Call("Scripts::History::Show/Hide")
Видимо, проблема в библиотеках win32. Есть ли возможность обновить/исправить?

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

LonerD, он давненько "поломался", то не по причине Win32, а потому что АР развивался, а я не поспеваю следить за изменениями(месяца 2 назад я заметил что он не работает(на64бит 8) и судя по всему уже с пол года). Да, в те времена под 64битным окружением у меня не было возможности запустить и проверить, потому работоспособность там я не гарантировал(должно было работать по идее).
Ради целостности картины, попробуйте запустить его на 32битном АР на той же системе, посмотрим действительно разница в плохой адаптации к х64, или же проблема с совместимостью с новыми версиями АР.

Offline
Posts: 171
Joined: Thu Dec 01, 2011 11:15 pm
Location: Россия

Post by LonerD »

FeyFre
AkelPad всегда использую только 32-х битный. Все плагины последних версий.
При вызове команды
Call("Scripts::History::Show/Hide") и просто Call("Scripts::Main", 1, "History.js","sr")
просто ничего не происходит.
Когда поломалось - не знаю, основная для меня функция Call("Scripts::History::Reopen Last") работает и сейчас, потому не обращал внимание (после того как заметил - вскользь о проблеме упоминал).

Попробовал пару старых версий Акелпада (и плагинов) с последней версией скрипта - та же ситуация. Когда-то больше года назад, когда у меня стояла Windows 8 x64, всё работало.

Попробовал Акелпад 4.7.2 со скриптом старой версии 0.9 - ругается на comctl32.js.

Попробовал 64-х битный Акелпад с 64-х битными плагинами - не работает ни одна функция скрипта, выскакивает ошибка о том, что функция не найдена в Scripts.dll.

Под ХР попозже запущу-посмотрю.

Offline
Posts: 96
Joined: Tue Nov 10, 2015 4:56 am

Post by InFive »

ребят, а в базе есть скриптик, который бы мог строчку типа

4.1-4.6 и т.д.

превратить в колонку

4.1
4.2
4.3
4.4
4.5
4.6

?

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

InFive
Не помню такого. НО! Если не требуется решать задачу "для общего случая", то может сгодиться "SearchReplace.js".

Что: (\d+)(\.)(\d+)(-)(\d+)(\.)(\d+)
Чем: var s=""; for (i = parseInt($3); i <= parseInt($7); i++) {s=s + $1 + $2 + i +"\n"}; return (s);
[x] Регулярные выражения
[x] Заменять на функцию

Если же требуется решение для диапазонов типа 4.6-5.2, то надо думать дальше

Offline
Posts: 96
Joined: Tue Nov 10, 2015 4:56 am

Post by InFive »

opk44 wrote:Если же требуется решение для диапазонов типа 4.6-5.2, то надо думать дальше
как-то сложновато получается...

ладн, спасибо, попробую решить свою задачу другим путем, минуя разбор таких диапазонов...

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

opk44 wrote: Если же требуется решение для диапазонов типа 4.6-5.2, то надо думать дальше
Тут нужны точные ограничители...
Если варианты первой от 1 до 9 и второй цифры от 0 до 9, то всё просто:

Code: Select all

var s=""; for (i = parseInt($1+$3); i <= parseInt($5+$7); i++) {i=i.toString(10); s=s + i.substr(0,1) + $2 + i.substr(1,1) + "\n"}; return (s);
если же нумерация более сложная, тогда уже надо будет подумать...

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

YuS wrote:если же нумерация более сложная, тогда уже надо будет подумать...
Не обязательно вторая, но и первая цифра тоже может оказаться двузначной (9.6-10.2).
А так, да, для простых и коротких списков, этот вариант получше.
Post Reply