Что нового

Ещё раз о русской справке :)

Статус
Закрыто для дальнейших ответов.

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
CreatoR
Новый скрипт с файлом Add_To_index.htm - для импорта ссылок в index.htm

Обновлённый CustomUDFs для нового скрипта

После обработки необязательно перезаливать всё на сервер, только новые и обновлённые каталоги (images, regexp, tutorials, userappendix, userfunctions) и файлы index.htm, userfunctions.htm, usernotes.htm
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
После обработки необязательно перезаливать всё на сервер, только новые и обновлённые каталоги (images, regexp, tutorials, userappendix, userfunctions) и файлы index.htm, userfunctions.htm, usernotes.htm
А как мне каждый раз знать, что обновилось а что нет?


Добавлено:
Сообщение автоматически объединено:

И ещё, в «Обучение -> Аккуратность» некорректная ссылка на Tidy (указывает на appendix/Tidy.htm вместо на userappendix/Tidy.htm).


Добавлено:
Сообщение автоматически объединено:

Добавил ссылки для Wrapper, Tidy и Obfuscator в обработку тега autoit:

Код:
#AutoIt3Wrapper_Version
#Tidy_Parameters
#Obfuscator_Parameters
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
CreatoR
А как мне каждый раз знать, что обновилось а что нет?
Это для текущего случая (CustomUDFs).

некорректная ссылка на Tidy
у себя поправил

Добавил ссылки для Wrapper, Tidy и Obfuscator в обработку тега autoit:
Проверил ссылку на главной страничке - не работает. Я там ошибку сделал в регистре, сам файл AppendixRef, а в *_TOC.hhc в appendixRef, из за этого файл добавился переименоанный в CHM и ссылка не работает. Надо везде указать appendixRef AppendixRef.


Добавлено:
Сообщение автоматически объединено:

CreatoR
Обновлённый CustomUDFs, имправил проблему с именами и #AutoIt3Wrapper_... доперевёл почти всё.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO
Некорректные ссылки в userfunctions, там «/html/userfunctions/» нужно заменить на «./».


Добавлено:
Сообщение автоматически объединено:

Нужно добавить в _Processing:

Код:
$html = StringRegExpReplace($html, '(?i)/html/(user|lib)?functions/', './') ; заменит внутренние пути CHM на внешние
$k += @extended
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
CreatoR
Текущий вариант скрипта. Проблема в нативных функциях я сам ошибся, ключ в _Processing был с обработкой перевода в нижний регистр. Добавил рег. выр. для замены 'href="[\\/]*html[\\/]' на 'href="'
Проверил вроде всё нормально и в UDF и в нативных функциях

Код:
; Скрипт для конвертации AutoIt-справки в CHM формате в онлайновую справку с распакованными файлами
; Для скрипта необходимы 4 файла:
; 7z.exe, который можно найти в папке установленного арихиватора 7-zip
; default.css - специальный для онлайн справки
; AutoIt3.chm, UDFs3.chm - обрабатываемые файлы
; Все файлы должны быть в каталоге скрипта

#include <File.au3>
#include <Array.au3>

Global $bDebug = False
; Global $bDebug = True ; со статистикой на 10 сек дольше (1.7 против 1.5 мин)
Global $Pattern[6], $Path = @ScriptDir

$Add_To_index_htm = FileRead($Path&'\Add_To_index.htm') ; файл должен быть без заголовочных тегов, только внутренности <BODY>

$hTimerTotal = TimerInit()
$CountTotal = 0

If Not FileExists(@ScriptDir & '\7z.exe') Then
	MsgBox(0, 'Сообщение', 'Файл 7z.exe в каталоге скрипта не найден')
	Exit
EndIf

; x - извлечь со структурой каталога
; -r - включая подкаталоги
; -o - куда извлекаем
; -y - ответ "Да" при замене одноимённых файлов
; AutoIt3.chm - извлекаемый файл
; html\* путь и маска указывающая что извлекать внутри архива

If FileExists($Path & '\UDFs3.chm') Then ; если не найдено, то выход
	If $bDebug Then ToolTip('Извлечение файла UDFs3.chm', Default, Default, 'Создание онлайн справки (1-2 минуты)', 1)
	
	RunWait(@ScriptDir & '\7z.exe x "' & $Path & '\UDFs3.chm" -o"' & $Path & '" html\* -r -y', '', @SW_HIDE) ; можно заккомментировать, чтобы пропустить извлечение UDFs3.chm

	If FileExists($Path & '\AutoIt3.chm') Then ; файл AutoIt3.chm извлекается при условии извлечения UDFs3.chm
		If $bDebug Then ToolTip('Извлечение файла AutoIt3.chm')
		RunWait(@ScriptDir & '\7z.exe x "' & $Path & '\AutoIt3.chm" -o"' & $Path & '" html\* -r -y', '', @SW_HIDE)

		If FileExists($Path & '\CustomUDFs.chm') Then ; файл CustomUDFs.chm должен извлекаться первым, чтобы перезаписать общие файлы
			If $bDebug Then ToolTip('Извлечение файла CustomUDFs.chm')
			RunWait(@ScriptDir & '\7z.exe x "' & $Path & '\CustomUDFs.chm" -o"' & $Path & '" html\* -r -y', '', @SW_HIDE)
		; Else
			; MsgBox(0, 'Сообщение', 'Файл CustomUDFs.chm не найден')
			; Exit
		EndIf
		
	Else
		MsgBox(0, 'Сообщение', 'Файл AutoIt3.chm не найден')
		Exit
	EndIf

Else
	MsgBox(0, 'Сообщение', 'Файл UDFs3.chm не найден')
	Exit
EndIf

$Path &= '\html'

FileCopy(@ScriptDir & '\default.css', $Path & '\css\', 9) ; копирование стилевого файла default.css для онлайн версии

$Pattern[0] = 3 ; обрабатывание до 3-го индекса. Если 5, то удалит кнопки "Копировать"
; текст для удаления кнопки "Открыть" сверху
$Pattern[1] = '<a href="JavaScript:hhctrl.Click()"><IMG NAME="botton" title="Открыть" style=''margin: 5px 4px 4px 10px;'' src=''../images/Open.gif''" border="0" align=''right''></a>'
; текст для удаления кнопки "Открыть" снизу
$Pattern[2] = '<a href="JavaScript:hhctrl.Click()"><IMG NAME="botton" title="Открыть" style=''margin: 20px 4px 4px 10px;'' src=''../images/Open.gif''" border="0" align=''right''></a>'
$Pattern[3] = '<a href="JavaScript:hhctrl.Click()"><IMG NAME="botton" title="Открыть" style=''margin: 0px 4px 4px 10px;'' src=''../images/Open.gif''" border="0" align=''right''></a>'
; текст для удаления кнопки "Копировать в буфер"
$Pattern[4] = '<a href="javascript:ClipBoard();"><IMG NAME="botton" title="Копировать в буфер" style=''margin: 5px 4px 4px 10px;'' src=''../images/copy.gif''" border="0" align=''right''></a>'
$Pattern[5] = '<a href="javascript:ClipBoard();"><IMG NAME="botton" title="Копировать в буфер" style=''margin: 20px 4px 4px 10px;'' src=''../images/copy.gif''" border="0" align=''right''></a>'

$FileList = _FileListToArray($Path & '\libfunctions')
If Not @error Then
	; переводим тексты в нижний регистр
	For $i = 1 To $FileList[0]
		$FileList[$i] = StringLower($FileList[$i])
	Next

	$hTimer = TimerInit()
	; переименовываем файлы
	$err = 0
	For $i = 1 To $FileList[0]
		If FileMove($Path & '\libfunctions\' & $FileList[$i], $Path & '\libfunctions\#@%' & $FileList[$i]) Then
			If Not FileMove($Path & '\libfunctions\#@%' & $FileList[$i], $Path & '\libfunctions\' & $FileList[$i]) Then $err += 1
		EndIf
		If $bDebug And Not Mod($i, 10) Then ToolTip('ReName ' & $i & ' - ' & $FileList[$i]) ; вывод каждого 10 файла, чтобы не тратило скорость на вывод
	Next
	If $bDebug Then
		If $err > 0 Then MsgBox(0, '', 'Была ошибка при переименовании файлов')
		MsgBox(0, '', 'Переименование выполнено за ' & Round(TimerDiff($hTimer) / 1000, 2) & ' сек')
	EndIf

	$hTimer = TimerInit()
	$kTotal = _Processing($FileList, 'libfunctions', 'UDF', 1)
	If $bDebug Then MsgBox(0, '', 'Количество замен в UDF - libfunctions = ' & $kTotal & @CRLF & 'выполнено за ' & Round(TimerDiff($hTimer) / 1000, 2) & ' сек')
	$CountTotal += $kTotal
EndIf

$FileList = _FileListToArray($Path & '\keywords')
If Not @error Then
	$hTimer = TimerInit()
	$kTotal = _Processing($FileList, 'keywords', 'KEY', 0)
	If $bDebug Then MsgBox(0, '', 'Количество замен в keywords = ' & $kTotal & @CRLF & 'выполнено за ' & Round(TimerDiff($hTimer) / 1000, 2) & ' сек')
	$CountTotal += $kTotal
EndIf

$FileList = _FileListToArray($Path & '\userfunctions')
If Not @error Then
	$hTimer = TimerInit()
	$kTotal = _Processing($FileList, 'userfunctions', 'Custom', 0)
; Вставка в индексный файл, заменой 
</BODY></HTML>
	$index_htm = FileRead($Path&'\index.htm')
	$index_htm = StringReplace($index_htm, '
'&@CRLF&'
</BODY></HTML>', $Add_To_index_htm) & '

</BODY></HTML>'
	$index_htm = StringReplace($index_htm, '<P><IMG height=1 src="images/blue_gradient_1024x24.jpg" width=1024></P>', '') ; этой строки нет в новой справке
	$file = FileOpen($Path&'\index.htm', 2)
	FileWrite($file, $index_htm)
	FileClose($file)
	If $bDebug Then MsgBox(0, '', 'Количество замен в userfunctions = ' & $kTotal & @CRLF & 'выполнено за ' & Round(TimerDiff($hTimer) / 1000, 2) & ' сек')
	$CountTotal += $kTotal
EndIf


; массив индивидуально выбранных файлов
; пути в массиве относительно каталога html
; 40 сек обработка одного файла с 2000 строк замен. Надо как то уменьшить время обработки
Local $FileList[2] = [1, 'libfunctions.htm']
$hTimer = TimerInit()
$kTotal = _Processing($FileList, '', 'Другие', 1)
If $bDebug Then MsgBox(0, '', 'Количество замен в "другие" = ' & $kTotal & @CRLF & 'выполнено за ' & Round(TimerDiff($hTimer) / 1000, 2) & ' сек')
$CountTotal += $kTotal


$FileList = _FileListToArray($Path & '\functions')
If Not @error Then
	$hTimer = TimerInit()
	$kTotal = _Processing($FileList, 'functions', 'FUNC', 0)
	$CountTotal += $kTotal
	If $bDebug Then
		$kTotal = @CRLF& @CRLF & 'Количество замен functions = ' & $kTotal & @CRLF & 'выполнено за ' & Round(TimerDiff($hTimer) / 1000, 2) & ' сек'
	Else
		$kTotal = ''
	EndIf
Else
	$kTotal = ''
EndIf

If $bDebug Then ToolTip('')
MsgBox(0, 'Создание справки завершено!', 'Общее количество замен = '&$CountTotal &@CRLF& _
'Общее время выполнения = ' & Round(TimerDiff($hTimerTotal) / 60000, 1) & ' мин' & $kTotal)

Func _Processing($FileList, $folder, $text, $Tr = 0)
	Local $i, $kTotal = 0, $aLink, $k, $j, $hFile, $Path0
	If $folder Then
		$Path0 = $Path & '\' & $folder
	Else
		$Path0 = $Path
	EndIf
	If $bDebug Then ToolTip('') ; сброс ToolTip для массива с менее 10 элементов
	; заменяем все тексты на тексты в нижнем регистре
	For $i = 1 To $FileList[0]
		$html = FileRead($Path0 & '\' & $FileList[$i])
		$k = 0
		If $bDebug And Not Mod($i, 10) Then ToolTip($text & ' ' & $i & ' - ' & $FileList[$i]) ; вывод каждого 10 файла, чтобы не тратило скорость на вывод
		
		$aLink = StringRegExp($html, '(<a href=".*?\.htm")', 3)
		If Not @error Then
			For $j = 0 To UBound($aLink) - 1
				If $Tr Then
					; заменит без учёта регистра в нижний регистр и заменит обратную черту на нормальную
					$html = StringReplace($html, $aLink[$j], StringReplace(StringLower($aLink[$j]), '\', '/'))
					$k += @extended
				Else
					$html = StringReplace($html, $aLink[$j], StringReplace($aLink[$j], '\', '/'))
					$k += @extended
				EndIf
			Next
		EndIf
		
		$html = StringReplace($html, '::/html/', '../') ; заменяет внутренние пути CHM на внешние
		$k += @extended
		
		$html=StringRegExpReplace($html, 'href="[\\/]*html[\\/]', 'href="') ; удалит html в путях для файлов с префиксом management
		$k += @extended
		
		For $j = 1 To $Pattern[0]
			$html = StringReplace($html, $Pattern[$j], '') ;
			$k += @extended
		Next
		
		; если изменения произошли, то сохраняем в файл
		If $k > 0 Then
			$hFile = FileOpen($Path0 & '\' & $FileList[$i], 2)
			FileWrite($hFile, $html)
			FileClose($hFile)
		EndIf
		$kTotal += $k
	Next
	Return $kTotal
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
Код:
$html=StringRegExpReplace($html, 'href="[\\/]*html[\\/]', 'href="') ; удалит html в путях для файлов с префиксом management
Не совсем корректно, в некоторых файлах есть ссылки на msdn, где также есть html, см. мой пост выше, так вроде правильнее.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
А почему в названии добавлено 2?
И как теперь из скрипта это будет генерироваться?
Кстати если будешь менять скрипт, используй этот.


Добавлено:
Сообщение автоматически объединено:

И ещё, папка menu дублируется теперь, там уже есть папка Menu (с заглавной буквы). Какую оставить?
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
CreatoR
А почему в названии добавлено 2?
Потому что этих файлов нет в справке, я их сам сделал, а на главной странице сделал к ним ссылки. Это упрощает переход к нужной функции с главной страницы.

И как теперь из скрипта это будет генерироваться?
Думаю просто скопировать с заменой.

там уже есть папка Menu
если эта та папка, которую я давал то лучше её удалить, потому что новая папка оптимизирована и содержит всё что нужно, без лишних файлов.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
Думаю просто скопировать с заменой.
Т.е в chm справке этих файлов не будет?
Я просто не хочу постоянно пытаться вспоминать что ещё нужно копировать и заменять, хочется просто скачать справку на русском (chm) (включая UDFs и т.п.), запустить скрипт генерации и залить на сервер, вот и всё.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
CreatoR
Т.е в chm справке этих файлов не будет?
Не будет, я добавил копирование этих файлов в скрипте, как это сделано сейчас для default.css, только отдельная папка.

Скачать - готовый вариант


Добавлено:
Сообщение автоматически объединено:

CreatoR
Может лучше всю справку перезалить? К примеру вот отсюда не рабочие ссылки. Файл functions2.htm на русском сделал.

Тестировать ссылки до перекачивания удобно с локального сервера Small HTTP server, http://localhost/html

Рег. выр. поправил - '(?i)/*html/(user|lib)?functions/' на '' так как "/" может быть и не быть. Заменять на "./" не обязательно, и так от текущего каталога берётся.


Добавлено:
Сообщение автоматически объединено:

Кстати если будешь менять скрипт, используй этот.
Это версия скрипта делает неправильные ссылки, я уже отписывал, что исправил параметр функции в 0. Используй новый скрипт.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
не нужен

CreatoR
Перезалил - Скачать. Ссылки в js-файлах для UDF нужно было конвертировать в нижний регистр. В общем файлы:
func_tree_items.js
lib_tree_items.js
total_tree_items.js
в папке menu надо обновить из нового архива.

Кстати, js-скрипт бесплатный и находится здесь
 
A

at

Гость
AZJIO: Как лучше переводить: pen (карандаш, перо), logical pen (похоже, тоже что просто перо), region (регион, область), bitmap (как есть, растровый рисунок, точечный рисунок)?

Нужно смотреть на полный текст и подбирать по смыслу.
Тут не сложно:
pen (перо), logical pen (логическое перо), region (регион, область, слой, место, участок, зона, район).

С этим термином посложнее: bitmap Мой вариант: растровое изображение

Цитата из Викепедии:
«Bitmap (англ. bit бит + map «карта») имеет значения:
Битовая карта (битовый массив, битовый вектор) — структура данных.
Бинарное изображение (двухуровневое, двоичное) — разновидность цифровых растровых изображений, когда каждый пиксель может представлять только один из двух цветов.
BMP — формат файлов растровой графики.
Bitmap на жаргоне (а во многих языках уже и нормативно) может означать вообще растровое изображение.»
Еще один вариант от google: графический файл бит-формата



Добавлено:
Сообщение автоматически объединено:

Еще вопрос: нельзя ли в шапку поместить ссылку на последний файл справки?
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
at
Мой вариант: растровое изображение
да, я так по началу и делал, но слишком длинно и упоминается слишком часто. Оставил до лучших времён. Хотелось бы услышать использование термина программистами, чтоб сразу придерживаться правильной терминологии. Но видимо программисты также не могут прийти к общему термину. Я понимаю термин, но в уме не говорю "растровое изображение", говорю "битмап", может и не переводить именно этот термин. Вообще в памяти хранится как битовая карта, пока оно на экране не отображается его нельзя назвать изображением. Вот и хотелось чтобы термин устроил по понятию и программистов и новичков.

В таблицу "Стили GUI" добавил компактный набор ссылок в заголовке для перехода к позиции, а в позиции возврат к началу (как в "Часто задаваемые вопросы (FAQ)").
 
A

at

Гость
AZJIO: "битмап", может и не переводить именно этот термин.

Без перевода будет действительно удобно. Как вариант, можно предложить использовать новый термин «графайл».
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
AutoIt3 + UDFs3

AutoIt3
Стили Gui - добавлен прыжок к разделу и к началу
В разделе Tray таблицы сделаны с видимыми границами и поправки
Переведено штук 10-15 строк в разных функциях скрытыми в теги <!-- --> непонятно зачем
Пример FileFindNextFile улучшен, тем более он повторял FileFindFirstFile

UDFs3
_WinAPI_GetDlgCtrlID
_WinAPI_GetFileSizeEx
_WinAPI_GetLayeredWindowAttributes
_WinAPI_GetMousePos
_WinAPI_GetMousePosX
_WinAPI_GetMousePosY
_WinAPI_GetOpenFileName
_WinAPI_GetSaveFileName
_WinAPI_GetWindowPlacement
_WinAPI_GetWindowRect
_WinAPI_GetWindowText
_WinAPI_GetWindowThreadProcessId

Examples - примеры в папку "C:\Program Files\AutoIt3"
 

gora

Знающий
Сообщения
315
Репутация
19
AZJIO
В архиве AutoIt3 + UDFs3 поврежден файл UDFs3.chm (сообщает архиватор при распаковке). Архив скачивал дважды, оба раза файлы скачались одинаковые, но распаковка UDFs3.chm невозможна.

PS
MD5 307ba1b496ab7c4d0438002f060c124a
 
Статус
Закрыто для дальнейших ответов.
Верх