Помогите написать скрипт
- Author
- Message
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Andrey_A_A
BE - BackEnd, FE - FrontEnd (он же UI).
То, что я написал, - примитив. Здесь более полно. Если не программист, то можно ознакомиться поверхностно, чтобы понять хоть какую-нить идею..
В случае с AkelPad'ом использовать TextFind (UI'шный метод) для множественной обработки текста - это извращение. Но его можно, и даже наверное лучше, использовать дл больших файлов, когда взятие всего содержимого файла (GetTextRange) затратно по ресурсам. Но это костыль, т.к в идеале должен быть BE-метод, по аналогии с TextFind, или который работает итеративно (представь, если что-то такое надо делать в нескольких файлах сразу.. перебрасывать во всех курсор?). Тем более, что определить ближайший перевод строки можно с помощью AkelEdit'а, т.е. вполне можно выделить общую часть и оформить это отдельным методом, в которую передавать искомый текст; препятствий к этому никаких не вижу.
BE - BackEnd, FE - FrontEnd (он же UI).
То, что я написал, - примитив. Здесь более полно. Если не программист, то можно ознакомиться поверхностно, чтобы понять хоть какую-нить идею..
В случае с AkelPad'ом использовать TextFind (UI'шный метод) для множественной обработки текста - это извращение. Но его можно, и даже наверное лучше, использовать дл больших файлов, когда взятие всего содержимого файла (GetTextRange) затратно по ресурсам. Но это костыль, т.к в идеале должен быть BE-метод, по аналогии с TextFind, или который работает итеративно (представь, если что-то такое надо делать в нескольких файлах сразу.. перебрасывать во всех курсор?). Тем более, что определить ближайший перевод строки можно с помощью AkelEdit'а, т.е. вполне можно выделить общую часть и оформить это отдельным методом, в которую передавать искомый текст; препятствий к этому никаких не вижу.
-
Offline
- Posts: 670
- Joined: Thu Jun 03, 2010 8:47 am
- Location: Сочи, Хоста
- Contact:
VladSh
Из всего прочитанного можно сделать вывод, что:
1. Любой скрипт - это плохое решение.
Поясню: Периодически мне приходится работать с системой где нет cscript.exe, wscript.exe и ни один скрипт не работает
2. Вызов скрипта из скрипта - тоже плохое решение
3. функция Include - тоже плохое решение
...
Зачем же созданы TextFind, TextReplace , если они плохие - костыли с палочками надо убрать, чтобы претензий не было
Последнее время я работаю с огромными текстовыми файлами, и когда увидел скрипт viewtopic.php?p=14788#p14788
первая мысль была - зачем же читать весь файл для переброски курсора, поэтому стал искать другие методы
Из всего прочитанного можно сделать вывод, что:
1. Любой скрипт - это плохое решение.
Поясню: Периодически мне приходится работать с системой где нет cscript.exe, wscript.exe и ни один скрипт не работает
2. Вызов скрипта из скрипта - тоже плохое решение
3. функция Include - тоже плохое решение
...
Зачем же созданы TextFind, TextReplace , если они плохие - костыли с палочками надо убрать, чтобы претензий не было
Последнее время я работаю с огромными текстовыми файлами, и когда увидел скрипт viewtopic.php?p=14788#p14788
первая мысль была - зачем же читать весь файл для переброски курсора, поэтому стал искать другие методы
-
Offline
- Site Admin
- Posts: 6403
- Joined: Thu Jul 06, 2006 7:20 am
VladSh wrote:UI - user interface.
В прогах обычно) есть код, работающий в формах, диалогах и т.п., а есть бэкграундный функционал, т.е. тот, который работает независимо от UI.
Так вот лучше всего, чтобы в бэкграундный был выделен код по максимуму, тогда при изменении форм и т.п. много переписывать не придётся...
В случае с AkelPad'ом использовать TextFind (UI'шный метод) для множественной обработки текста - это извращение...
А в чем "UI'шность" TextFind? Видимо предполагается, что, когда в скрипте указано "AkelPad.TextFind", то открывается диалог поиска/замены в скрытом режиме, ему передаются все данные, определенные нажатия клавиш и диалог после отработки закрывается...Но это костыль, т.к в идеале должен быть BE-метод, по аналогии с TextFind, или который работает итеративно (представь, если что-то такое надо делать в нескольких файлах сразу.. перебрасывать во всех курсор?).

-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
"UI'шность" уже даже в том, что используется курсор (его переброска). Чистый метод (не UI), это когда передал начальную точку, и он ищет и возвращает текст безо всякого курсора - курсор так на месте и стоит.Instructor wrote:А в чем "UI'шность" TextFind? Видимо предполагается, что, когда в скрипте указано "AkelPad.TextFind", то открывается диалог поиска/замены в скрытом режиме, ему передаются все данные, определенные нажатия клавиш и диалог после отработки закрывается
-
Offline
- Site Admin
- Posts: 6403
- Joined: Thu Jul 06, 2006 7:20 am
VladSh
Понятно. Стоит ли удивляться, что вас не понимают, пользовательский интерфейс (UI) и перемещение каретки - это немного разные вещи. Видимо негодование исходит из того, что метод TextFind сам выделяет, искомое слово, но это больше повод написать об этом в теме плагина, чем писать как плохо этим пользоваться здесь.
Понятно. Стоит ли удивляться, что вас не понимают, пользовательский интерфейс (UI) и перемещение каретки - это немного разные вещи. Видимо негодование исходит из того, что метод TextFind сам выделяет, искомое слово, но это больше повод написать об этом в теме плагина, чем писать как плохо этим пользоваться здесь.
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Каретка, курсор и т.п. - это элементы пользовательского интерфейса. Бэкграунд - это позиция (не курсора, а чего бы то ни было) в файле, а соответственно и методы..Instructor wrote:Стоит ли удивляться, что вас не понимают, пользовательский интерфейс (UI) и перемещение каретки - это немного разные вещи.
Ну особого негодования-то нет), просто хотелось бы методу, не трогающий каретку.Instructor wrote:Видимо негодование исходит из того, что метод TextFind сам выделяет, искомое слово, но это больше повод написать об этом в теме плагина, чем писать как плохо этим пользоваться здесь.
Почему же плохо?)) Если нужен одноразовый переброс, и именно каретки, то это как раз оптимальный вариант.
Плохо для обработки каким-то образом содержимого файла..
В теме плагина я об этом писал уже 2 раза, люди спрашивают именно здесь.. Можно этот кусок перенести в тему плагина) И у нас тема дискуссий по скриптам уже есть, кто ж виноват, что она разлезлась на две?)
-
Offline
- Posts: 6
- Joined: Sun Jan 15, 2012 4:05 am
Помогите написать скрипт
Прошу написать скрипт, который бы менял положение символов в выделенном тексте, ставя их в обратном порядке. Заранее спасибо.
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
Allid
There are two scripts:
1
SortList.js
Separator: empty string
and select: "Reverse order of elements".
2
SortWords.js
Select:
"No separator - sorts single chars"
and
"Reverse order of words".
There are two scripts:
1
SortList.js
Separator: empty string
and select: "Reverse order of elements".
2
SortWords.js
Select:
"No separator - sorts single chars"
and
"Reverse order of words".
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Allid
Обратить пристальное внимание на Hotkeys plugin)
Обратить пристальное внимание на Hotkeys plugin)
-
Offline
- Posts: 6
- Joined: Sun Jan 15, 2012 4:05 am
VladSh
Кр. - сестр. тланта.
Вы не сказали что с ним делать. Нашел только похожую команду Call("Format::Linereverse"), но это не то.
Мне тот скрипт SortList.js понравился - все понятно, только неудобно, что приходиться нажимать кнопку "sort" и после диалог закрывать.
Я попросил сделать более простой скрипт, что бы он только под одну задачу был - обратить порядок символов, те. без меню выбора других действий. В настройках скриптов очень просто можно указать сочитание клавиш с помощью которых он бы запускался.
В строке "Команда" что написать-то?
Кр. - сестр. тланта.
Вы не сказали что с ним делать. Нашел только похожую команду Call("Format::Linereverse"), но это не то.
Мне тот скрипт SortList.js понравился - все понятно, только неудобно, что приходиться нажимать кнопку "sort" и после диалог закрывать.
Я попросил сделать более простой скрипт, что бы он только под одну задачу был - обратить порядок символов, те. без меню выбора других действий. В настройках скриптов очень просто можно указать сочитание клавиш с помощью которых он бы запускался.
В строке "Команда" что написать-то?
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Allid
Глянул, Hotkeys-плагин не нужен, это когда параметры извне скрипту можно задавать он нужен, а в этих скриптах этого к сожалению нет, - они работают только из диалога.
Чтобы вызвать скрипт по комбинации клавиш достаточно в окне скриптов напротив скрипта поставить нужую комбинацию.
P.S. Кстати, в дистрах есть доки по скриптам и ФАКи тоже, которые даже можно читать..
Глянул, Hotkeys-плагин не нужен, это когда параметры извне скрипту можно задавать он нужен, а в этих скриптах этого к сожалению нет, - они работают только из диалога.
Чтобы вызвать скрипт по комбинации клавиш достаточно в окне скриптов напротив скрипта поставить нужую комбинацию.
P.S. Кстати, в дистрах есть доки по скриптам и ФАКи тоже, которые даже можно читать..
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
VladSh wrote:Allid
Глянул, Hotkeys-плагин не нужен, это когда параметры извне скрипту можно задавать он нужен, а в этих скриптах этого к сожалению нет, - они работают только из диалога.
Чтобы вызвать скрипт по комбинации клавиш достаточно в окне скриптов напротив скрипта поставить нужую комбинацию.
P.S. Кстати, в дистрах плагов есть доки по скриптам и ФАКи тоже, которые даже можно читать..
-
Offline
- Posts: 1873
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
reverse.jsAllid wrote:Я попросил сделать более простой скрипт, что бы он только под одну задачу был - обратить порядок символов, те. без меню выбора других действий.
Code: Select all
AkelPad.ReplaceSel(AkelPad.GetSelText().split("").reverse().join(""));
-
Offline
- Posts: 1291
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Могут быть проблемы с переносом строк, однако сама лаконичность скрипта просто заставляет прослезитьсяInfocatcher wrote:Code: Select all
AkelPad.ReplaceSel(AkelPad.GetSelText().split("").reverse().join(""));
