trucer — удаление пробелов с концов строк

Здесь обсуждается всё, что касается макросов.
User avatar
raven428
Posts: 51
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 10 times
Been thanked: 1 time

trucer — удаление пробелов с концов строк

Post by raven428 »

переписал свой плагин на lua, ибо не нашёл на форуме ничего с такой же функциональностью и без зависимостей. плагин, в общем-то, по-прежнему вполне рабочий, но корёжит юникод. устанавливать как обычно - в %FARPROFILE%\Macros\scripts. с конфигурацией, в отличии от плагина, не заморачивался - всё в начале файла. функциональность такая же как у плагина (почти что копипастил), разве что концы строк не меняет.

конструктивная критика приветствуется. только прошу учесть, что на lua я сегодня программировал первый раз, если не считать конвертацию макросов в формат far3.

ссылка
too much raVen over paradise...
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

trucer - замена одноимённого плагина

Post by John Doe »

Latest post of the previous page:

raven428 wrote: обработка файла в два миллиона строк занимает несколько секунд
Интересно сравнить скорость выполнения плагина и скрипта на таком файле. В любом случае простор для оптимизации есть.
raven428 wrote: с задержкой 1 миллисекунда
Да, всё нормально, это я вчера не вник.
raven428 wrote: в FarEncyclopedia.ru.chm нашёл только Trim
Его и имел ввиду, и да он действительно не подходит.
Но всё равно mf.trim тут не нужен, хотя бы потому что стандартный string.match работает ощутимо быстрее.
raven428 wrote: os.time();
far.FarClock
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

trucer - замена одноимённого плагина

Post by John Doe »

Для информации.
Скрипты аналогичного назначения имеются в пакетах SimSU и Rh_Scripts
(Ни в одном из них не предусмотрен запуск при сохранении)
User avatar
raven428
Posts: 51
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 10 times
Been thanked: 1 time

trucer - замена одноимённого плагина

Post by raven428 »

John Doe wrote:
raven428 wrote: обработка файла в два миллиона строк занимает несколько секунд
Интересно сравнить скорость выполнения плагина и скрипта на таком файле.В любом случае простор для оптимизации есть.
если смотреть на глазок, то плагин быстрей на примерно на 30%.
John Doe wrote:
raven428 wrote: в FarEncyclopedia.ru.chm нашёл только Trim
Его и имел ввиду, и да он действительно не подходит.
Но всё равно mf.trim тут не нужен, хотя бы потому что стандартный string.match работает ощутимо быстрее.
попробовал отсюда на коленке trim7, разницы особо не заметил. надо с замерами тестировать, но пока не могу себе позволить выделить на это время.
John Doe wrote:
raven428 wrote: os.time();
far.FarClock
воспользуюсь при случае, спасибо. пока рисование изменений раз в секунду вполне годится.
John Doe wrote: Для информации.
Скрипты аналогичного назначения имеются в пакетах SimSU и Rh_Scripts
я видел, да. но свой старый плагин переписал именно по этой причине:
John Doe wrote: (Ни в одном из них не предусмотрен запуск при сохранении)
и по кнопке end вроде никто пробелы не обрезает. кроме того, во втором пакете очень много зависимостей и отдельные скрипты у меня не получилось поставить к себе, чтобы они заработали.
too much raVen over paradise...
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

trucer - замена одноимённого плагина

Post by John Doe »

raven428 wrote: подскажите, пожалуйста, аналоги. в FarEncyclopedia.ru.chm нашёл только Trim, но у него нет параметров кроме обрабатываемой строки. функциональность плагина подразумевает отрезание пробелов только с правой стороны строки.
В апи есть http://api.farmanager.com/ru/fsf/rtrim.html
Но luafar не предоставляет эту функцию.

P.S.
Вот по теме http://forum.farmanager.com/viewtopic.php?f=15&t=8635

P.P.S.
Часть сообщений отделена: http://forum.farmanager.com/viewtopic.p ... 77#p140777
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

trucer — замена одноимённого плагина

Post by John Doe »

Code: Select all

 action = function(eid, event, params)
  sav_info = editor.GetInfo(eid);
  if not(
   (
    (event == far.Flags.EE_READ) and trim_at_read or
    (event == far.Flags.EE_SAVE) and trim_at_save
   ) and (sav_info.TotalLines < trim_lines_limit)
  ) then
   return;
  end;
  --...
Большинство событий отсекаются уже по event, и вызывать для них небесплатный GetInfo как-то неоптимальненько

P.S.
А ещё было бы полезно иметь возможность обработать файл не по событию, а по команде (макросу или пункту в меню плагинов)

P.P.S.
John Doe wrote: Внешние скобки в if()then end не обязательны (впрочем и не мешают, дело вкуса)
То же насчёт точки с запятой: необходимости нет.
То же с шагом в for: есть смысл указывать только если ~=1
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Производительность Lua

Post by HaRT »

В порядке наброса: а ещё, поскольку тут обработка построчная, она должна хорошо параллелиться на все доступные ядра ЦП.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Обсуждение макросов”