Infocatcher видимо изначально было "Расшифровывание", "Зашифровывание".
Posted: Wed Dec 22, 2010 11:00 pm
by Andrey_A_A
Чего бы хотелось видеть ещё в плагине:
1. Сортировка текста по Длине строк
(по убыванию\возрастанию)
(алфавитный порядок прямой\обратный)
-------------------------------
Выделение строк N длины
Получение строк N длины
Удаление строк N длины
2. Сортировка текста по Кодам символов (по убыванию\возрастанию)
Posted: Thu Dec 23, 2010 12:34 pm
by Fr0sT
Andrey_A_A
хотя бы одно применение, которое пригодится не только тебе - ?
Posted: Thu Dec 23, 2010 2:13 pm
by FeyFre
Fr0sT, да ладно. Большинство фич-реквестов были нужны кому-то одному.
Posted: Thu Dec 23, 2010 2:21 pm
by opk44
Andrey_A_A wrote:Чего бы хотелось видеть ещё в плагине:
1. Сортировка текста по Длине строк ...
Какой-то странный "букет" сортировок предложен, но по ассоциации подумалось, что неплохо было бы добавить воможность задавать в виде параметра позицию начального символа при сортировке. Идея "пропускать N первых символов при сортировке" не новая. Еще во времена DOS в редакторе MultiEdit была такая возможность. Применялось при/для сортировки таблиц по заданной колонке (позиции каретки). Например, была приходно-расходная ведомость ТМЦ сформированная по алфавиту или по артикулам. Можно было найти всю номенклатуру "дороже цены ИКС" отсортировав ведомость по колонке с ценой (все колонки в ведомости были фиксированной ширины).
Posted: Thu Dec 23, 2010 2:41 pm
by FeyFre
но по ассоциации подумалось, что неплохо было бы добавить воможность задавать в виде параметра позицию начального символа при сортировке
Есть уже. Вертикальным блоком выделить область которую нужно сортировать, и запустить сортировку - буедт сортировать начиная не с начала строки а с начала области(и только те строки которые попали в область)
Posted: Fri Dec 24, 2010 7:21 am
by Andrey_A_A
Да действительно эта функция не на каждый день (сортировка по Длинне строки). Но есть ряд больших списков, которые именно так и отсортированы.. переиодически приходится в них добавлять новые строки... и вновь отсортировывать. Вначале я использовал текст редактор Hieroglyph (в котором есть расширенный функционал по сортировки строк- всё в одном). Кстати был бы такой в AkelPad - цены б ему не было. Потом я нашел утилиту с поддержкой командной строки с параметрами сортировки TextDuplicateKiller - который сейчал и использую. Оба варианта не поддерживают кроме сортировки по длине (убыв.\возраст.), ещё и алфавитный(прямой\обратный) Пример
Можно отсортировать
aa
ab
aaa
aab
aaaa
aaab
...
а можно:
ab
aa
aab
aaa
aaab
aaaa
а так как супер редактор AkelPad стал родным, я и хотел попросить у Гуру о такой возможности иметь такой функционал в AkelPade. Спасибо за понимание
Posted: Fri Dec 24, 2010 8:07 am
by Fr0sT
FeyFre, и большинство из этого большинства отправились в /dev/null Andrey_A_A
кажется, я видел нечто похожее в коллекции скриптов, поройся там
Posted: Fri Dec 24, 2010 8:52 am
by Andrey_A_A
В скриптах я роюсь уже три недели. Почти все разобрал (около 150 штук, которые нашел), чем-то воспользовался, что-то выкинул из-за невнятности использования...
Да, есть скрипты, связанные с выделением и сортировкой , Но пока не встретил то, что надо по этой теме ... может то встречал... подскажите...
Posted: Fri Dec 24, 2010 10:06 am
by FeyFre
FeyFre, и большинство из этого большинства отправились в /dev/null
А меньшинство из большинства родили плагины SpellCheck и Speech, ну и ещё Templates.
Ах да, вон KDJ клепает скрипты как на конвейере, хотя фич-реквестов на них не было(а значит они так или иначе сначала нужны были только ему). И как бы /dev/null тут ни при чем.
Posted: Fri Dec 24, 2010 12:12 pm
by Fr0sT
FeyFre, собственно, это очевидно - если что-то нужно только тебе, то do it yourself. Хотя к плагинам это не относится
Posted: Fri Dec 24, 2010 3:42 pm
by FeyFre
К плагинам это относится точно так же как и к скриптам макросам и прочему. Негоже изза потребности забить гвоздь каждый раз за соседом плотником бегать(если Вы конечно замуж за него не собрались), а лучше самому научиться забивать гвозди.
Posted: Fri Dec 24, 2010 4:42 pm
by opk44
Andrey_A_A wrote:В скриптах я роюсь уже три недели. Почти все разобрал...
1) Похвально. Но разве при таком-то количестве свободного времени, не имеет смысл написать свои скрипты, а не искать чужие?
2) Скорее всего, идеально подходящего и универсального решения сразу сделать не получится, поэтому предлагаю Вам реализовывать задачу отдельными фрагментами. Тогда сгодятся даже не очень красивые, но зато очень простые решения. Допустим, по первой части запроса, можно на основе исходного файла списка создавать новый файл, в котором каждая строка будет начинаться числом, равным длине этой строки. Полученный файл отсортировать затем а AkelPad-e стандартным образом (by integer). После сортировки и обработки (например, нахождения всех строк с нужными длинами и их удаления) останется удалить левую колонку с цифрами у всех оставшихся строк.
var ForReading = 1, ForWriting = 2, ForAppending = 8;
// директория, имя и расширение исходного (_IN) и выходного (_OUT) файлов
var DIR_NAME = 'D:\\WORK\\';
var FILE_NAME_IN = 'INS_FIZ_1011';
var FILE_EXTENSION_IN = '.sql';
var FILE_NAME_OUT = 'INS_FIZ_1011_NUM';
var FILE_EXTENSION_OUT = '.txt';
var TXT = '';
var TXT_SIZE = 0;
// открытие исходного файла на чтение
var fso_in = new ActiveXObject("Scripting.FileSystemObject");
var TXT_IN = DIR_NAME + FILE_NAME_IN + FILE_EXTENSION_IN;
var file_in = fso_in.OpenTextFile(TXT_IN,ForReading,false);
// открытие производного файла на добавление
var fso_out = new ActiveXObject("Scripting.FileSystemObject");
var TXT_OUT = DIR_NAME + FILE_NAME_OUT + FILE_EXTENSION_OUT;
var file_out = fso_out.OpenTextFile(TXT_OUT,ForAppending,true);
// построчно читаем входной файл, считаем длину строки,
// дописываем в выходной файл (дополнительно вставляется символ табуляции).
while (!file_in.atEndOfStream)
{
TXT = file_in.ReadLine();
TXT_SIZE = TXT.length; // получить длину строки
file_out.WriteLine(TXT_SIZE + '\t' + TXT);
}
file_in.Close();
file_out.Close();
Я упражнялся на файле размером около 75Мб (четверть миллиона строк), время его обработки всего несколько секунд.
Надеюсь, понятно, что задача "удаление/получение строк N длины" получается на основе данного подхода почти автоматически? Достаточно в цикле вставить проверку значения TXT_SIZE и игнорировать запись лишних в выходной файл или наоборот, вписывать только нужные:
...
if (TXT_SIZE = N)
{
file_out.WriteLine(TXT);
}
(если сортировка остальных строк не потребуется, то тут можно и не вписывать длины строк).
Posted: Fri Dec 24, 2010 6:59 pm
by Andrey_A_A
Спасибо за расширенный ответ. Скрипты я разбирал в плане полезности для себя и работоспособности для вставки в меню. Сам скрипты я начал писать недавно на vbs и au3 для организации файловой системы в тотале. В алелпаде большинство написано на js, а к нему привыкнуть и понять надо. Но всё равно спасибо. Идеи понятны, будем реализовывать...
Posted: Fri Dec 24, 2010 7:24 pm
by FeyFre
Andrey_A_A
vbs акел тоже понимает, как и любой другой язык, который понятен для Windows Scripting Host