PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Компилятор справки PureBasic на основе компилятора справки AutoIt3


Компилятор справки PureBasic на основе компилятора справки AutoIt3

Сообщений 1 страница 23 из 23

1

Собственно сам компилятор

Чтобы создать справку по своим функциям или описать чужой модуль или несколько модулей, то:
1. Создаём файлы описания в DynamicSRC\txtUserFunctions
2. В папке DynamicSRC\au3UserExamples создаём одноимённые примеры (будут присоединены к описанию)
3. Выполнить скрипт SD_AutoIt_Help_Builder_Mod.au3 (могу скомпилировать если потребуется), для этого должен быть установлен AutoIt3 версии 3.3.8.1 (и установлен HTML_Help_Workshop). Откроется GUI в котором нажать ОК и появится файл PB User.chm (можно менять тему белая/чёрная).

В текущем компиляторе уже есть файлы описания для Registry.pbi и bigint.pbi в качестве примера. Остаётся только собрать. Также есть описание в комплекте.

Вот что из этого вышло PB User.7z

До кучи сделал компилятор на англ. языке по просьбе

Отредактировано AZJIO (09.03.2022 23:34:43)

0

2

Зачем так сложно? Зачем УСТАНАВЛИВАТЬ для этих целей HTML Help Workshop? Для генерации chm нужен hhc (работает из комстроки) и пара-тройка dll-ок. Можно кинуть их прямо к скрипту. Зачем сложности с установкой AutoIT? В чём преимущества AutoIt по сравнению, скажем, тем же PowerShell, идущим "из коробки"?

0

3

Smitis написал(а):

Зачем так сложно? Зачем УСТАНАВЛИВАТЬ для этих целей HTML Help Workshop? Для генерации chm нужен hhc (работает из комстроки) и пара-тройка dll-ок. Можно кинуть их прямо к скрипту.

Они там и есть в папке Utils. Но не помню точно с какими трудностями я сталкивался, но с "HTML Help Workshop" надёжность была 100%, не приходилось разгадывать почему что-то не работает. Из скрипта вызывается именно Utils\hhc.exe, так что можно не ставить.

Smitis написал(а):

Зачем сложности с установкой AutoIT? В чём преимущества AutoIt по сравнению, скажем, тем же PowerShell, идущим "из коробки"?

В том что на AutoIt уже написано, а на PowerShell нет. Казалось бы можно написать на PureBasic, но я не хочу тратить своё время. В PureBasic уже есть "PureBasic\SDK\DocMaker\DocMaker.exe", но чтобы я мог обрабатывать по своему нужен исходник, а в том виде в котором предлагает DocMaker.exe без подсветки без ещё много чего, мне такое не интересно собирать. Я наоборот стараюсь показать как это могло бы выглядеть, чтобы авторы DocMaker.exe а)открыли исходный код, б)возможно сделали бы подключение плага, например перед тем как собрать отправили бы на обработку в мою функцию, в) сделали бы более гибко - возможность менять теги блоков, может какой-нибудь скелет страницы, чтобы вставлять блоки описания и кода в позиции указанные в странице. Сейчас это несовершенство сильно выпирает, нет стилей (уже 100 раз говорил), нет определения блоков, всё в одной куче, если вам нравится как есть то конечно ничего менять не надо, а мне чтобы это улучшить надо столько костылей выстроить чтобы собрать приемлемое.

————————————
Добавил функцию Vast от Little John, https://www.purebasic.fr/english/viewto … 36#p459536

Отредактировано AZJIO (09.12.2021 12:19:55)

0

4

Есть идеи по добавлению каких либо pbi?

0

5

hhc.exe
что она делает? случаем не парсер html?

AZJIO написал(а):

без подсветки

какая подсветка, chm это html,  в html задуман цветной текст
есть, правда древние, упаковщики chm, ты чё изобретаешь?
сомневаюсь что ты про них не знаешь

AZJIO написал(а):

Казалось бы можно написать на PureBasic,

возьми и напиши, а не городи свой личный огород
незнаю что на сегодня, но ещё недавно небыло новых упаковщиков

Smitis написал(а):

Зачем так сложно? Зачем УСТАНАВЛИВАТЬ..........

поглядел я на эти проблемы и даже пробовать не стал, надо качать аж две проги
вроде  HTML Help Workshop платная

0

6

hhc.exe это из упомянутой проги запчасти и она не платная, это официальная майкрософтовская прога по сборке chm выглядит примитивно но с мощным функционалом. Есть перепаковка от gora на русском языке.
CHM на основе html это да, но цвет в html сам не появляется. Я не упаковщик делаю, упаковщик это ранее упомянутая прога, а скрипт это как и в PureBasic на основе текстовых шаблонов генерирует html страницу.

Мой личный огород? Да скрипт то и так на 80% мой личный огород, вот только писал его я несколько лет (условно), то есть время от времени переписывал обработку. Движок анализатор построчно шаблонов оригинальный, а я уже делил данные на части и в каждой части обрабатывал данные, подсветку, ссылки, скелет страницы, исключения. Моя цель описать функции, а не писать движок заново, пока он работает неплохо, можно добавить официальную тему, но я пока занят и функций мало, чтобы делать движок ради двух модулей реестра и больших чисел.

Ну и правильно что качать не стал, не забивай мозг, там еще все сырое, поиграешься, время потеряешь. Все равно описания надо создавать, в этом основная трудность, если создашь я могу скомпилировать. Я уже писал давай идеи по модулям, я сам сделаю, правда при условии что они и мне будут интересны. В плане у меня есть несколько выборочных функций: генерировать путь и получить путь процесса, ну еще примеры wm_сообщений можно добавить, но я каждый раз сомневаюсь что мои варианты оптимальны

Отредактировано AZJIO (13.12.2021 10:54:26)

0

7

AZJIO написал(а):

Есть идеи по добавлению каких либо pbi?

В справку?
Вообще можно этот добавить https://www.purebasic.fr/english/viewtopic.php?t=72980

0

8

Да, справка в Autoit шикарна! Сказано, потрудились люди. Такую бы в PB.
Делюсь своей версией для PB: PureBasic.chm
Источник, найден на просторах интернета.
Этот жёлтый, меня напрягает. Изменил внешний вид под себя, может кому-то и понравится белый фон. Улучшил поиск в указателе.

Отредактировано Webarion (19.12.2021 11:01:26)

0

9

Webarion написал(а):

Делюсь своей версией для PB:

У меня ни чего не отображается.
За место инфо белый лист.

0

10

dibor написал(а):

У меня ни чего не отображается.
За место инфо белый лист.

Вот это я не знаю почему. У меня всё норм.
https://forumupload.ru/uploads/0009/ae/28/644/t902173.jpg

0

11

dibor написал(а):

У меня ни чего не отображается.

Посмотри в свойствах файла, есть ли там "Разблокировать" - используется для файлов скачанных с интернета, при чём для CHM именно ваша проблема, неразблокированный просто ничего не отображает.

Webarion написал(а):

Да, справка в Autoit шикарна! Сказано, потрудились люди.

Не один год переводил.

Webarion написал(а):

Такую бы в PB.

Частично обрабатывал, есть стили внешние, примеры подсвеченные, ссылки в примерах, ну в общем почти получилось. Писал на оф.форуме, но думаю не сработает, так как авторы трудятся над преобразованием кода в Си, а со справкой возится это на год погрузится в отдельную работу.

Webarion написал(а):

Улучшил поиск в указателе

посмотри как у меня в указателе сделано, там даже кальки есть: декларе, дефайн и т.д. Введи "Гаджет" и будет русский вариант названий, с непривычки я и сам путаюсь например ищу "лист", а там "список".

Webarion написал(а):

Вот это я не знаю почему. У меня всё норм

Выкладывай файл в zip-архиве, тогда будет норм.

Вот мой вариант, точнее перевод от sergey2400, а от меня обработка скриптами. Ну и может скрипты обработки будут интересны.

Отредактировано AZJIO (20.12.2021 10:41:40)

0

12

AZJIO написал(а):

Посмотри в свойствах файла, есть ли там "Разблокировать" -

Да, был заблокирован :(

Спасибо!

0

13

Добавил несколько функций:
FindData
Is64BitOS
_WinAPI_PathFindOnPath (тут надо доработать)
_WinAPI_ExpandEnvStr
_WinAPI_SHGetSetFolderCustomSettings
Раздел WM_Messages и 8 функций
Раздел Drives

Отредактировано AZJIO (12.03.2022 16:17:11)

0

14

В AutoIt3 был файл справки, который объединял 2 справки в одно дерево. Долго мучился, но в итоге сделал аналог:
Скачать.

MergingHelp - компилятор объединяющего файла.

Отредактировано AZJIO (13.03.2022 13:31:54)

0

15

AZJIO написал(а):

В AutoIt3 был файл справки, который объединял 2 справки в одно дерево. Долго мучился, но в итоге сделал аналог...

Использую сейчас твою справку. Но, есть один неудобный для меня момент - раньше, с другой справкой, при выделении слова в редакторе и нажатии F1, справка автоматически открывала страницу с описанием, если такое ключевое слово существует. Для меня, это достаточно удобная штука. Хотелось бы, чтобы и в твоей версии это работало)

Отредактировано Webarion (16.05.2022 23:26:32)

0

16

Webarion написал(а):

и нажатии F1, справка автоматически открывала страницу с описанием

В комплекте есть help.exe, я использую запуск через него. На сколько я знаю стандартный способ должен работать, так как открывает через имя файла внутри справки (без MergingHelp). Но я использую help.exe, чтобы открывались примеры прямо из справки в правом верхнем углу значок открытия примеров.

0

17

Раз уж тема поднята, то обновил справку добавив функции собственного производства. Кончено же RegexReplace2 я переделал, остальные полностью с нуля, разве что когда мне показали как происходит побайтовое чтение памяти, сразу идеи пошли как это использовать.

RegexReplace2 Замена с помощью регулярного выражения с использованием ссылок на группы в строке замены.
IsDigital Проверяет является ли все символы в строке цифрами 0-9
IsFloat Проверяет является ли текст дробным числом, например "1.2"
IsHex Проверяет является ли строка шестнадцатеричным числом с цифрами 0-9, A-F
IsLatin Проверяет является ли строка набором букв и цифр A-Z, 0-9
LTrimChar Удаляет указанные символы слева.
RTrimChar Удаляет указанные символы справа.
RepeatCharN Повторяет указанный символ заданное число раз.

0

18

AZJIO
дайте ссылку на последние файлы помощи для Pb и ваших функций

0

19

bizdon
Ссылка в шапке темы (PB User.7z), загружаю всегда на яндекс просто кидая файл в браузер и подменяя старый файл. Чтобы использовать с MergingHelp нужно заменить пробел подчёркиванием, в следующий раз буду выкладывать с правильным именем.

0

20

AZJIO написал(а):

Раз уж тема поднята, то обновил справку добавив функции собственного производства. Кончено же RegexReplace2 я переделал

К сожалению, все эти варианты с заменой обратных ссылок через ReplaceString в корне неправильные (в том числе и которые я выкладывал) - в них легко получить ошибочный результат. Увы.

0

21

Smitis
Вы можете ответить тут о проблемах. Я там особо ничего не менял, смысл остался прежним. Я заменил формирование результата через список, что позволило быстро объединять строки копируя память (это я почерпнул из примера Петра, когда он давал мне код поиска файлов и код медленно объединял строки и он дал пример через копирование памяти), так как объединение переменных работает медленно за счёт перевыделения памяти. И вычисление групп вынес из цикла, так как группы в рег.выр.е не изменяются, поэтому нет смысла например 1000 раз запрашивать количество групп, их всегда будет одно и тоже для текущего рег.выр.а. Так что я сделал оптимизацию и выложил. А остальные 3 варианта из 4-х работают менее стабильно, то не кроссплатформенно, то просто глюки, либо работают только при определённых условиях. А эта функция работает идеально везде. Единственное её ограничение это от 0 до 9 групп (в AutoIt3 нет ограничения), можно было бы сделать как в AutoIt3 но в 99.999% это не пригодится, там если групп больше 10 то используется синтаксис \{99}, ради этого придётся немного усложнить анализатор, грубо говоря искать в тексте замены конструкцию \\\{d+\}, но я сделаю это, когда придётся использовать рег.выр. с более чем 10 групп.

Smitis написал(а):

в них легко получить ошибочный результат

Всмысле, что \1 может оказаться текстом а не группой? Ну так это от пользователя зависит, если это введено как правило воспринимать \1 как группу, то просто надо это учитывать, а не считать это ошибкой.

Или вы хотите вместо ReplaceString использовать ReplaceRegularExpression, чтобы запретить группы методом экранирования \\1, типа искать \1 перед которым нет двойной наклонной черты \\? Типа такого рег.выр (?<!\\)\\\d или (?<!\\)(?:\\\\)*\K(\\\d) где если нечётное число \\ перед цифрой, то это воспринимается как группа.

Можно добавить IsRegularExpression(#RegularExpression), чтобы перед использованием проверить что этот рег.выр. прошёл валидацию.

Отредактировано AZJIO (20.05.2022 14:31:22)

0

22

AZJIO написал(а):

Вы можете ответить тут о проблемах.

Я знаю эту тему и что-то уже даже озвучивал.

AZJIO написал(а):

Ну так это от пользователя зависит, если это введено как правило воспринимать \1 как группу, то просто надо это учитывать, а не считать это ошибкой.

Если бы заранее знать, что придётся заменять и на что, то сама необходимость выполнения замены отпадёт :) (шучу, шучу).

Думаю, лучше действительно продолжить в той теме.

0

23

Обновил
Добавлено:
SplitM - разделить строку в карту
SplitL2 - разделить строку в список, но разделитель любой символ из множества.
ScanDir от Петра, древовидный результат поиска файлов
GetCopyName - получить копию имени несуществующего файла
ShortFileSize - кратко указать размер данных, с приставкой  Тб, Гб, Мб, кб
Сделан отдельный раздел для файловых операций, там уже 6 функций.

Изменено:
RegexReplace2 - улучшенная версия, обсуждалась
RepeatCharN - вариант через FillMemory, заполнение памяти

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Компилятор справки PureBasic на основе компилятора справки AutoIt3