Scripts discussion (4)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

VladSh wrote:Тут не нужны эти простыни.
Могу убрать, но не нахожу смысла страданий.

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

Post by opk44 »

AZJIO
Зря обиделись. Если обратите внимание, то в ветке "Scripts collection" VladSh взял на себя труд вести аннотированный перечень/картотеку ВСЕХ скриптов ВСЕХ авторов (см. первую страницу). Но с условием, что пользователи САМИ будут размещать текущие версии скриптов в данной коллекции (как правило, 1 пост = 1 скрипт) и, соответственно, сами будут поддерживать их в актуальном состоянии (не редкость скрипты, которые редактировались уже десятки раз). Скрипты размещённые в других ветках не отслеживаются. И со временем получается, что скрипт вне коллекции, он как бы есть, но его как бы и нет. Часто ли пользователь перечитывает страницы веток кроме последней? Потеряется скрипт среди прочего bla-bla-bla так хорошо, что и удалять не придётся. Об этом речь.

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

В общем у меня не совсем как хотелось получилось с ChmKeyword.js поэтому я перенаправил на свои скрипты открытия справки,

Code: Select all

var pEditFile = AkelPad.GetEditFile(0);
var pFileExt  = AkelPad.GetFilePath(pEditFile, 4 /*CPF_FILEEXT*/);
var sSelText = AkelPad.GetSelText()
if (sSelText=="")
{
  var sLink = AkelPad.GetAkelDir() + "\\AkelFiles\\Docs\\AkelHelp-Rus.htm";
  AkelPad.SystemFunction().Call("Shell32::ShellExecuteW", 0, "open", sLink, 0, 0, 1);
  WScript.Quit();
}

switch (pFileExt.toLowerCase())
{
  case "au3":
    AkelPad.Exec('"C:\\ваш_путь\\AutoIt3.exe" "C:\\ваш_путь\\HELP_AutoIt3.au3" ' + sSelText + ' 1');
    break;
  case "pb":
    AkelPad.Exec('"C:\\ваш_путь\\AutoIt3.exe" "C:\\ваш_путь\\Help.au3" ' + sSelText + ' 1');
    break;
  // case "css":
  case "htm":
  case "html": // для веб ищем в домене htmlbook.ru
    var sLink = 'https://www.google.com/search?source=hp&q=' + sSelText + ' site:htmlbook.ru' + '&oq=' + sSelText
    AkelPad.SystemFunction().Call("Shell32::ShellExecuteW", 0, "open", sLink, 0, 0, 1);
    break;
  case "css": // если хотим прямую ссылку на http://htmlbook.ru/css/тег, иначе раскомментриуем строку над "htm"
    var sLink = 'http://htmlbook.ru/css/' + sSelText
    AkelPad.SystemFunction().Call("Shell32::ShellExecuteW", 0, "open", sLink, 0, 0, 1);
    break;
  default: // по умолчанию просто ищем в Google
    var sLink = 'https://www.google.com/search?source=hp&q=' + sSelText + '&oq=' + sSelText
    AkelPad.SystemFunction().Call("Shell32::ShellExecuteW", 0, "open", sLink, 0, 0, 1);
    break;
}


HELP_AutoIt3.au3 и Help.au3
Отличие заключается в то что файл открывается самостоятельно (не дочерним) и в поисковую строку вставляется выделенный текст и нажимается Enter (даже если вкладка иная, выбирается нужная) и это не создаёт проблем с запуском скриптов по встроенным ссылкам с относительными путями на внешние примеры.
opk44 wrote:Скрипты размещённые в других ветках не отслеживаются
Я пока не уверен что мои скрипты начатые писаться неделю назад на коленке на незнакомом языке можно предполагать как важные скрипты могущие потеряться и их срочно надо сфотографировать, по крайней мере в моём файловом архиве даже самые мелкие не потеряются и конечно я их выложу снова как проверенные, нужные, вылизанные до мелочи (наверно), по причине отсутствия аналогов, чтобы после мне бы не писали что я выложил фуфло и зря трачу время своё и пользователей. И я веду обсуждение, я выкладываю скрипты, в которых сомневаюсь, поэтому это и есть обсуждение, или я не понимаю(?) каждый чих сразу в коллекцию, а здесь обсуждать чихи?

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Есть идея написать валидатор HTML но только в плане незакрытых тегов или лишнее закрытие. Попробовал написать на AutoIt3, начало получилось (validateHTML)

Code: Select all

файл1.htm
5	td

файл2.htm
-1	b
с подсчётом разницы между открытыми и закрытыми.
Может переделать на js? Поробовал tidy.exe он выдал кучу не нужных ошибок:

Code: Select all

Warning: <img> lacks "alt" attribute
Warning: <table> lacks "summary" attribute
но для таблицы не выдал инфу о закрывающем теге колонки

Code: Select all

<td><img src='images/....png' border="0"><td>1</td>
Алгоритм не сложен. Открыть файл, получить текст, удалить закрытые одиночные теги

Code: Select all

<\w+\h[^<>]+?\h/>
получить массив открытых и закрытых тегов

Code: Select all

<(\w+)(?:\h[^<>]+)?>   ; открытых 
</(\w+)>    ; закрытых
получить вычислить разницу для каждого вида, если отличается от 0 то составить структурную строку вложенности тегов на одной строке, например

Code: Select all

span
() ()
()
(
())
)
клик в логе по скобке - прыжок в строку.

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

Post by opk44 »

AZJIO wrote:но для таблицы не выдал инфу о закрывающем теге колонки

Code: Select all

<td><img src='images/....png' border="0"><td>1</td>
Для <TD> и <TR> закрывающий тег не обязателен.

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

Post by YuS »

AZJIO wrote:Есть идея написать валидатор HTML но только в плане незакрытых тегов или лишнее закрытие.
Возможно, пригодится:
Если вдруг, необходима именно валидация html, то уже кто-то писал скрипт для HTML Tidy
теги проверяются тоже..

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

YuS wrote:то уже кто-то писал скрипт для HTML Tidy
Я это уже использовал и отписал результаты. Конечно я позже понял что с началом нового тега таблиц предыдущий автоматически закрывается, это очевидно, и поэтому он эту ошибку игнорирует, аналогично и "li", и исправление не улучшило ничего на странице. Просто я решил проверить пару сотен страниц одним скриптом и вдруг я не ожидал получить штук 50 ошибок. Почти ни одна ошибка не влияла но отображение. Проблема была в её поиске, то есть я нашёл имя тега, расхождения в количестве, имя файла, открыл и парюсь ищу (по тексту), с Tidy стало полегче прыгать в строку, но если бы хотя бы плаг "лог" имел возможность подсветить результаты или даже форматировать их, то я бы сделал некоторые строки блеклыми или бы удалил. В плаге Notepad++ есть плаг NppExec, у которого есть возможность и подсветить и заменить текст и получается очень удобно подстроить вывод если в лог сыплет мусор. Мы же не можем изменить exe-файл, который выдаёт инфу в лог как было задумано автором, но можем форматировать результат уже в консоли или перед тем как её туда отправить.

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

Post by YuS »

AZJIO wrote:Я это уже использовал и отписал результаты.
Не совсем понятна конечная задача...
На всякий случай:
Tidy умеет форматировать текст. Tidy можно запускать с конфигурацией настроек...
AZJIO wrote:но если бы хотя бы плаг "лог" имел возможность подсветить результаты или даже форматировать их, то я бы сделал некоторые строки блеклыми или бы удалил.
На каждую выданную ошибку плаг умеет перепрыгивать... F4 и Shift+F4
AZJIO wrote: В плаге Notepad++ есть плаг NppExec, у которого есть возможность и подсветить и заменить текст и получается очень удобно подстроить вывод если в лог сыплет мусор. Мы же не можем изменить exe-файл, который выдаёт инфу в лог как было задумано автором, но можем форматировать результат уже в консоли или перед тем как её туда отправить.
Подсветить результаты вывода плагина, можно добавив в настройках алиаc для темы Coder.
Чтобы заменить что-то, сначала необходимо определиться что именно менять и на что...

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

YuS wrote:Tidy умеет форматировать текст. Tidy можно запускать с конфигурацией настроек...
я в курсе, у меня всё отформатировано, можно только испортить.
YuS wrote:На каждую выданную ошибку плаг умеет перепрыгивать... F4 и Shift+F4
по крайней мере я в консоли кликаю нужную мне ошибку, а он много липового выносит в лог, что прыгать по F4 ещё хуже, на 10 строк одну нужно исправить. В NPP тоже плаг есть, возможно даже ранее я использовал именно этот exe через ком-строку. Так что для меня все эти фичи не новость, они удобны тля скачанного с интернета файла, когда он и так уже "испорчен", а мои ручной работой сделаны.
YuS wrote:Чтобы заменить что-то, сначала необходимо определиться что именно менять и на что...
вау, это проблема что менять? У меня на каждый лог будет куча замен, мне просто описывать их здесь лень, мне нужно чтобы работало, в качестве примера если трудно составить шаблон на придуманных словах, то вот эти слова "искомое" и "заменяемое".

YuS wrote:Подсветить результаты вывода плагина, можно добавив в настройках алиаc для темы Coder.
серьёзно? а в какой секции писать то? А то я уже как бы несколько дней тему мусолил, посмотри в ветке этого плага, я и там написал, что пробовал указывать ему кодер и в каждом разделе писал правила, он ничего не видит. Буду рад если я ошибаюсь.

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

Post by YuS »

AZJIO wrote: по крайней мере я в консоли кликаю нужную мне ошибку, а он много липового выносит в лог, что прыгать по F4 ещё хуже, на 10 строк одну нужно исправить. В NPP тоже плаг есть, возможно даже ранее я использовал именно этот exe через ком-строку. Так что для меня все эти фичи не новость, они удобны тля скачанного с интернета файла, когда он и так уже "испорчен", а мои ручной работой сделаны.
Вот я и говорю: а в чем задача-то?
Если валидация всего html, то tidy это и делает, а то, что нужно править - показывает log-плагин. Кликаем мышкой, прыгаем хоткеями - как больше нравится/удобнее.
Вываливает много лишнего? Так я потому и говорю про конфигурацию:

Code: Select all

Configuration File Settings:
Name                        Type       Current Value
=========================== =========  ========================================
accessibility-check         Enum       0 (Tidy Classic)
add-meta-charset            Boolean    no
add-xml-decl                Boolean    no
add-xml-space               Boolean    no
alt-text                    String
anchor-as-name              Boolean    yes
ascii-chars                 Boolean    no
assume-xml-procins          Boolean    no
bare                        Boolean    no
break-before-br             Boolean    no
char-encoding               Encoding   utf8
clean                       Boolean    no
coerce-endtags              Boolean    yes
css-prefix                  String     c
custom-tags                 Enum       no
decorate-inferred-ul        Boolean    no
doctype                     String     auto
drop-empty-elements         Boolean    yes
drop-empty-paras            Boolean    yes
drop-proprietary-attributes Boolean    no
enclose-block-text          Boolean    no
enclose-text                Boolean    no
error-file                  String
escape-cdata                Boolean    no
escape-scripts              Boolean    yes
fix-backslash               Boolean    yes
fix-bad-comments            Enum       auto
fix-style-tags              Boolean    yes
fix-uri                     Boolean    yes
force-output                Boolean    no
gdoc                        Boolean    no
gnu-emacs                   Boolean    no
hide-comments               Boolean    no
indent                      Enum       no
indent-attributes           Boolean    no
indent-cdata                Boolean    no
indent-spaces               Integer    2
indent-with-tabs            Boolean    no
input-encoding              Encoding   utf8
input-xml                   Boolean    no
join-classes                Boolean    no
join-styles                 Boolean    yes
keep-tabs                   Boolean    no
keep-time                   Boolean    no
literal-attributes          Boolean    no
logical-emphasis            Boolean    no
lower-literals              Boolean    yes
markup                      Boolean    yes
merge-divs                  Enum       auto
merge-emphasis              Boolean    yes
merge-spans                 Enum       auto
mute                        String
mute-id                     Boolean    no
ncr                         Boolean    yes
new-blocklevel-tags         Tag Names
new-empty-tags              Tag Names
new-inline-tags             Tag Names
new-pre-tags                Tag Names
newline                     Enum       CRLF
numeric-entities            Boolean    no
omit-optional-tags          Boolean    no
output-bom                  Enum       auto
output-encoding             Encoding   utf8
output-file                 String
output-html                 Boolean    no
output-xhtml                Boolean    no
output-xml                  Boolean    no
preserve-entities           Boolean    no
priority-attributes         Attribute
punctuation-wrap            Boolean    no
quiet                       Boolean    no
quote-ampersand             Boolean    yes
quote-marks                 Boolean    no
quote-nbsp                  Boolean    yes
repeated-attributes         Enum       keep-last
replace-color               Boolean    no
show-body-only              Enum       no
show-errors                 Integer    6
show-info                   Boolean    yes
show-meta-change            Boolean    no
show-warnings               Boolean    yes
skip-nested                 Boolean    yes
sort-attributes             Enum       none
strict-tags-attributes      Boolean    no
tab-size                    Integer    8
tidy-mark                   Boolean    yes
uppercase-attributes        Enum       no
uppercase-tags              Boolean    no
vertical-space              Enum       no
warn-proprietary-attributes Boolean    yes
word-2000                   Boolean    no
wrap                        Integer    68
wrap-asp                    Boolean    yes
wrap-attributes             Boolean    no
wrap-jste                   Boolean    yes
wrap-php                    Boolean    yes
wrap-script-literals        Boolean    no
wrap-sections               Boolean    yes
write-back                  Boolean    no

AZJIO wrote:вау, это проблема что менять? У меня на каждый лог будет куча замен, мне просто описывать их здесь лень, мне нужно чтобы работало, в качестве примера если трудно составить шаблон на придуманных словах, то вот эти слова "искомое" и "заменяемое".
Не о том речь, а об автоформатировании. Как сказать tidy.exe, что нам требуется менять, а что нет? Только через конфигурационный файл или командную строку...
AZJIO wrote:серьёзно? а в какой секции писать то? А то я уже как бы несколько дней тему мусолил, посмотри в ветке этого плага, я и там написал, что пробовал указывать ему кодер и в каждом разделе писал правила, он ничего не видит. Буду рад если я ошибаюсь.
Не совсем понятно, что именно не получается?
Указывать надо не .coder, а расширение файла, например: .html

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

YuS wrote:Вываливает много лишнего? Так я потому и говорю про конфигурацию:
alt-text
Type: String
Default: -
Default: -
автор как бы намекает что опция не отключаемая, нет у неё параметров таких как
Default: no
Example: y/n, yes/no, t/f, true/false, 1/0
но я в ком-строке попробовал передать с параметром 0 и т.д. (проверяя границы возможного) не помогло.
YuS wrote:Указывать надо не .coder, а расширение файла, например: .html
я указал .sss то есть сделал sss.coder, чтобы он его использовал, далее сделал захват номера строки и колонки

Code: Select all

QuotesRE:
1	"\(\d+,\d+\)"	"\0=(0,#AFE7B3,0)"
1	"^\d+:"	"\0=(0,#E3CEAB,0)"
захватывал буквы

Code: Select all

Words:
;--Latin alphabet--
2	0	#BFCAA9	0	"ABCDEFGHIJKLMNOPQRSTUVWXYZ
;--Cyrillic alphabet--
2 0 ${ATTR} 0 "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЭЪЫЬЭЮЯ"
он должен был что-то подсветить, но ничего.

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

Post by YuS »

AZJIO wrote:
alt-text
Type: String
Default: -
Default: -
автор как бы намекает что опция не отключаемая, нет у неё параметров таких как
Default: no
Example: y/n, yes/no, t/f, true/false, 1/0
но я в ком-строке попробовал передать с параметром 0 и т.д. (проверяя границы возможного) не помогло.
Не так. Я ведь привел столбцы конфигурации, где указан тип опций, а там просто String, и никаких Boolean, поэтому ни y/n, ни 0/1 и не должны работать...
Вот так правильно:
alt-text Top
Type: String
Default: -
Example: -
This option specifies the default "alt=" text Tidy uses for <IMG> attributes. This feature is dangerous as it suppresses further accessibility warnings. You are responsible for making your documents accessible to people who can not see the images!
ну, да ладно, это уже к AP отношение имеет отдаленное...
AZJIO wrote: я указал .sss то есть сделал sss.coder, чтобы он его использовал, далее сделал захват номера строки и колонки

Code: Select all

QuotesRE:
1	"\(\d+,\d+\)"	"\0=(0,#AFE7B3,0)"
1	"^\d+:"	"\0=(0,#E3CEAB,0)"
захватывал буквы

Code: Select all

Words:
;--Latin alphabet--
2	0	#BFCAA9	0	"ABCDEFGHIJKLMNOPQRSTUVWXYZ
;--Cyrillic alphabet--
2 0 ${ATTR} 0 "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЭЪЫЬЭЮЯ"
он должен был что-то подсветить, но ничего.
Кодер файлы подключаются не по своему названию, а по содержимому секции Files, т.е. надо так:
Files:
;==========
;File types
;==========
*.sss

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

YuS wrote:Вот так правильно:
я же читал это описание, что там правильно? что надо вставить текст в то место где он определяет ошибку? я понимаю что исправлю и он замолчит, но моя то задача запретить ему выдавать в лог. Там куча файлов по 20 мелких картинок, я там 500 замен буду делать ради чтобы он замолчал, несоизмеримо.
YuS wrote:т.е. надо так:
Files:
;==========
;File types
;==========
*.sss
оно именно так. Я конечно могу выложить файл sss, но там ничего интересного остальные секции пусты, самое важное я выложил. Хоть я и не удалял секцию Files:, но я не вкладывал в неё смысл, потому что у лога нет расширения, если я сменю вкладку, а в выводе будет отсутствовать ссылка на файл, то есть нет привязки к файлу, то клик на строке с прыжком к строке/колонке будет работать для любого файла, и не будет переключать вкладку. Поэтому *.sss только для связывания псевдонима в кеше с файлом *.sss, а лог неизвестно работает через псевдоним как там в русском переводе или по имени файла кодера. Но я как бы подстраховался, хоть через псевдоним, хоть через имя и кеш проверил. Ну и кроме того если он подхватил чёрную тему, значит он его видит, ну тогда что мешает подхватить и остальное? Я даже в первые разы пытался вставить через существующие кодеры, и потом чтобы не запортить экспериментами и забыть как раньше было я просто сделал новый и мучил всеми вариантами. Ну в общем сделай, может у тебя получится.
Короче, проверил ещё раз кеш, не увидел там sss, а я ведь его удалял и потом сколько тестировал удалял. В общем заработало. Номер строки подсветился, будем дальше ковырять на следующих выходных.

Теперь надо команду в меню/хоткей, чтобы налету обновлял подсветку, чтобы для конкретного случая вписал команды подсветки в sss-кодер, сделал обновление выполнил задачу с выводом в лог. На данный момент я перезапускаю AkelPad.
Указывать надо не .coder, а расширение файла, например: .html
хоть это и в качестве примера, но я не вижу смысла использовать любой из существующих, разве лог может быть каким то из существующих языков/разметок, скорее для него однозначно можно создать что-то собственное и встроить я бы сказал в официальный комплект, чтобы не приходилось столько плясать с бубном.

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

Post by YuS »

AZJIO wrote:
YuS wrote:Вот так правильно:
я же читал это описание, что там правильно? что надо вставить текст в то место где он определяет ошибку?
Что это опция не для отключения слежения за наличием этого атрибута... да там, вроде бы и нет такой возможности отключать слежение за отдельными тегами.
Я ведь сразу написал, что:
Если вдруг, необходима именно валидация html
а не слежение за отдельными тегами, тогда Tidy, иначе придется писать свой скрипт...
AZJIO wrote: я понимаю что исправлю и он замолчит, но моя то задача запретить ему выдавать в лог. Там куча файлов по 20 мелких картинок, я там 500 замен буду делать ради чтобы он замолчал, несоизмеримо.
Валидация предполагает исправление всех ошибок... а если надо слежение за отдельными тегами, то скорее всего, Tidy не подходит для такой задачи...

AZJIO wrote: оно именно так. Я конечно могу выложить файл sss, но там ничего интересного остальные секции пусты, самое важное я выложил. Хоть я и не удалял секцию Files:, но я не вкладывал в неё смысл, потому что у лога нет расширения, если я сменю вкладку, а в выводе будет отсутствовать ссылка на файл, то есть нет привязки к файлу, то клик на строке с прыжком к строке/колонке будет работать для любого файла, и не будет переключать вкладку. Поэтому *.sss только для связывания псевдонима в кеше с файлом *.sss, а лог неизвестно работает через псевдоним как там в русском переводе или по имени файла кодера. Но я как бы подстраховался, хоть через псевдоним, хоть через имя и кеш проверил.
Я тоже проверил, подставив .sss и взяв за основу _html.coder, сделал _sss.coder ... вполне себе всё, что указано, подсветилось.
Image
AZJIO wrote: Ну и кроме того если он подхватил чёрную тему, значит он его видит, ну тогда что мешает подхватить и остальное? Я даже в первые разы пытался вставить через существующие кодеры, и потом чтобы не запортить экспериментами и забыть как раньше было я просто сделал новый и мучил всеми вариантами. Ну в общем сделай, может у тебя получится.
У меня-то заработало сразу... значит, что-то ты сделал не так.

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

YuS
я добавил рег.выр. для поиска с помощью FindReplaceEx.js

Code: Select all

QuotesRE:
1	"^  \[\d+, \d+, \d+, \d+:\d+\]"	"\0=(0,#AFE7B3,0)"
Но как бы добавить аналог меток типа

Code: Select all

"Бирюзовым" Call("Coder::HighLight", 2, "#00B096", 0, 1, 0, 11) Icon("%a\AkelFiles\Plugs\Coder.dll", 6)
только для результатов поиска, чтобы подсветить в строках где находится найденный текст.
Post Reply