<span class="price nowrap">156</span>
<b></b> <p>Lorem ipsum dolor sit amet.<p/>
<span class="price nowrap">155</span>
<p>Lorem ipsum dolor sit amet.<p/> <i></i>
<span class="price nowrap">176</span>
<img src="img.png" alt="">
<span class="price nowrap">352</span>
<b></b> <b>Lorem ipsum dolor sit amet.<b/>
<span class="price nowrap">128</span>
Lorem ipsum dolor. <span>something</span>
<span class="price nowrap">257</span>
- Выделил фрагмент текста «<span class="price nowrap">»
- В горячих клавишах записана команда «Call("Scripts::Main", 1, "LinesHideShow.js")»
- Запустил скрин комбинацией клавиш
В результате были скрыты не подподающие под шаблон строки (скрипт только скрывает) и получил необходимые мне строки. Однако, так как остальные строки скрыты, а не удалены из документа, то выделить курсором весь массива не получается потому, что вместе с ним копируются и скрытые строки. Как можно выделить именно оставшийся видимый текст, чтобы скопировать только их без скрытых строк???
Eskander88
Я использовал LinesFilter.js, он видимо вырезает строки, то что я получил смог скопировать. Потом нажал "отмена" и вернул к первоначальному состоянию документ. Этот скрипт вроде идёт комплектом.
У меня так.
"Фильтр строк с регулярными выражениями" Call("Scripts::Main", 1, "LinesFilter.js")
Posted: Thu Sep 24, 2020 4:53 pm
by Eskander88
AZJIO, LineFilter.js конечно более продвинутое средство для сортировки строк, однако с linesHideShow.js некоторые операции делать удобнее. Скрипт linesHideShow.js позволяет с помощью одного клика выявлять необходимые строки по выделенному шаблона фрагмента и тут же обозревать все строки, а потом можно также быстро возвращаться. В LineFilter.js требует не только нескольких кликов, но и зачастую он используется и для иных манипуляций и тогда можно зацепить по запарке чекбокс с поиском по регулярке, что приводит к некоторым конфузам.
В коде скрипта linesHideShow.js есть достаточно не типовые языковые конструкции, поэтому мне сложно понять как избежать вышеописанную загвоздку и сохранить работоспособность скрипта.
var oSys = AkelPad.SystemFunction();
var hWndEdit = AkelPad.GetEditWnd();
var nSelStart = AkelPad.GetSelStart();
var nSelEnd = AkelPad.GetSelEnd();
if (nSelStart == nSelEnd) {
GetWord()
}
function GetWord() {
var nLine = AkelPad.SendMessage(hWndEdit, 1078 /*EM_EXLINEFROMCHAR*/ , 0, nSelStart); // номер строки
var nLineStart = GetBeginLine(nLine); // Начало строки
var nLineEnd = GetEndLine(nLine); // Конец строки
// var pLineText=AkelPad.GetTextRange(nLineStart, nLineEnd); // получили строку
var pLineText1 = AkelPad.GetTextRange(nLineStart, nSelStart); // получили часть строки перед курсором
var pLineText2 = AkelPad.GetTextRange(nSelStart, nLineEnd); // получили часть строки после курсора
// pLineText2 = pLineText2.match(/^[\wа-яё]+/im); // метод включения
pLineText2 = pLineText2.match(/^[^\\=\-\[\]\(\)\$#@%^&\*=\s,.!?<>\/:;"'\|~`]+/im); // метод исключения
if (pLineText2 == null) {
pLineText2 = "";
} else {
pLineText2 = pLineText2[0]; // из массива в строку
}
// делаем реверс левой части строки
var res = "";
var i;
for (i = pLineText1.length; i > -1; i--) {
res += pLineText1.charAt(i);
}
// res = res.match(/^[\wа-яё]+/im); // метод включения
res = res.match(/^[^\\=\-\[\]\(\)\$#@%^&\*=\s,.!?<>\/:;"'\|~`]+/im); // метод исключения
if (res == null) {
res = "";
pLineText1 = "";
} else {
// если есть результат, делаем обратный реверс
pLineText1 = "";
res = res[0]; // из массива в строку
for (i = res.length; i > -1; i--) {
pLineText1 += res.charAt(i);
}
}
WScript.Echo(pLineText1 + pLineText2); // получаем результат. Курсор может быть в начале слова, в конце и в средине.
}
function SendMessage(hWnd, uMsg, wParam, lParam) {
return oSys.Call("User32::SendMessage" + _TCHAR, hWnd, uMsg, wParam, lParam);
}
function GetBeginLine(nLine) {
return SendMessage(hWndEdit, 187 /*EM_LINEINDEX*/ , nLine, 0);
}
function GetEndLine(nLine) {
return SendMessage(hWndEdit, 187 /*EM_LINEINDEX*/ , nLine, 0) + SendMessage(hWndEdit, 193 /*EM_LINELENGTH*/ , SendMessage(hWndEdit, 187 /*EM_LINEINDEX*/ , nLine, 0), 0);
}
- определение букв происходит рег.выр.ом методом исключения или включения. Да, я нашёл вариант с использованием EM_FINDWORDBREAK без фикса и он плохо выделял на краях, поэтому продолжил доделывать свой вариант. Ну а потом уже нашёл это.
Posted: Tue Oct 06, 2020 11:45 am
by AZJIO
Обновил Search_internet.js добавив необязательное выделение слова, то есть захватывает слово под курсором.
Обновил CloseTabByExt.js, добавлен ключ -Ask=true, чтобы выдавать имена закрываемых файлов, и возможность отмены закрытия.
Posted: Thu Oct 08, 2020 6:09 pm
by Diamen
Do it have a script, or other functionality, to smart replace initials spaces to correspondents tabs?
Обновил CreateNewFileNext
Добавлено три аргумента:
1. Диалог запроса имени
2. Флаг создания копии, вместо нового. Для меня важно, так как я часто после встраивания некоторого законченного функционала в код/скрипт делаю его бэкап в виде имя_оригинала_индекс, например "CreateNewFileNext_1.js", где 1 это номер копии, потом будет 2 и т.д. То есть я могу откатится к предыдущей версии в случае падения системы с порчей файла или нерелевантных обновлений. Хотя я знаю о скрипте "backupVersion.js", но каждый делает как ему привычно. Кстати, функционал был изначально встроен и закомментирован в упрощённом варианте.
3. Имя при создании нового.
Обновил (исправил) CloseTabByExt.js
Правильно использовал параметр MinTabs.
Сначала исправил в строке 44:
было указано 2 минимальное количество вкладок, но на деле это число означает количество пунктов в списке, что для другого типа скрипта откуда я его взял означает именно вкладок. А у меня получилось так что открыв 10 txt-файлов я их не могу закрыть этим скриптом, так как это 1 пункт списка и поэтому он не появляется.
Теперь вернул MinTabs =2 по умолчанию, но использовал его именно при подсчёте количества вкладок в строке 474.
Posted: Sun Oct 11, 2020 3:29 am
by AZJIO
Kley
Посмотрел MsgBoxBuild.js, я такой тоже делал для AutoIt3, но с автозахватом переменных выделенного участка кода. То есть суть была вывод состояния переменных, чтобы каждый раз не составлять муторно конструкцию и запихивать переменные, а вызвать хоткей, убрать лишние переменные в списке и клавишей Ctrl+V вставить в нужную позицию. Единственное у AutoIt3 переменные легко детектируются (начинаются на $). То есть по сути создать отладчик с быстрым получением отладочной строки, то есть создать красивую мессагу раз в году можно и ручками, а вот отладочную строку приходится делать 10-100 раз на скрипт.
Posted: Sat Nov 07, 2020 4:54 pm
by Infocatcher
measuresConverter.js v. 0.2.9.1 - 2020-11-07
[x] Fix for expired certificate, back to use http://api.bitcoincharts.com.
Posted: Thu Nov 12, 2020 9:06 am
by AZJIO
Infocatcher
Сильно не разбирался, но я решил обновить сборку и скачал новый winMergeTabs.js через абдейтер, начинаю сравнивать 2 файла самого же winMergeTabs.js 0.1.3 и версию из интернет-сборки 0.1.2, пишет файлы идентичны, тут же сравниваю tileTabs.js, который тоже скачался, тоже пишет идентичны (в Meld), хотя я визуально вижу разные версии. Кидаю из интернет-сборки v0.1.2 в свою и сравниваю tileTabs.js, уже не пишет идентичны.
Posted: Thu Nov 12, 2020 6:41 pm
by Infocatcher
AZJIO
Так сравнивает же приложение, а по части winMergeTabs.js – передача правильных параметров командной строки (в случае, если оба документа во вкладках уже сохранены). Правильные ли пишет пути к файлам? (У себя я пока проблем не вижу…)
Posted: Thu Nov 12, 2020 10:17 pm
by AZJIO
Infocatcher анимация-скрин
У меня просто попадает на исследование последний файл. Удивляет почему все проги не предупреждают что сравнивается один и тот же файл. Решил проверить а если новый документ (не файл), сравнил, тоже сравнивает последний в обоих окнах. Ну то есть генерирование файлов в %temp% тоже печальный вариант.
Проверил WinMerge, кинув в оба поля один и тот же файл, он промолчал что пути одинаковы, видимо подразумевается что файл может измениться и можно сравнить старый буфер с изменённым файлом, но факт не предупреждает что путь одинаковый.