Что нового

TidySource - аккуратный код в SciTE

Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
CreatoR [?]

Сейчас посмотрел - у меня эта строка оказалась закоментированной.
Просто забыл обновить. :smile:

PS: правда, я пользуюсь не скомпилированным скриптом, а A3X-файлом.
Это заглушка, чтобы программа не запускалась во время компиляции скрипта.
(украшать код во время компиляции - смысла нет, видимо, только, для резервного копирования)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
asdf8 [?]
Это заглушка, чтобы программа не запускалась во время компиляции скрипта.
Ну у меня например скрипт запускается через AutoItWrapper (по г.клавише), и Tidy после этого не работает.
Закомментировал эту строчку у себя.

Возможно нужно проверять параметры запущенного Wrapper'а, если там есть /in, тогда не продолжать выполнение Tidy.
 

Skif_off

Знающий
Сообщения
173
Репутация
13
asdf8
Спасибо, забрал. Такой вопрос еще: в каких пределах допустимо модифицировать, если допустимо? :smile:
Компилил с
Код:
#AutoIt3Wrapper_Res_Fileversion=1.2.2a
#AutoIt3Wrapper_Res_LegalCopyright=asdf8
#AutoIt3Wrapper_Res_Field=Coded by|asdf8
#AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%

AkelPad UDF бы еще...
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Skif_off [?]
в каких пределах допустимо модифицировать, если допустимо?

Раз исходник в свободном доступе, то модифицировать конечно можно, достаточно упоминания в копирайте.
ps: в РЕ файл зашить версию содержащую буквы не получится, как вариант, номер модификации можно указывать четвертым числом версии.
 

Skif_off

Знающий
Сообщения
173
Репутация
13
Зашивал так, но это всё на скорую руку, набросок по сути, подсмотрю потом (модифицированный исходник нечаянно потерял, надо расковыривать exe'шник :() директивы у AZJIO.


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

asdf8
Помимо тесной интеграции с SciTE что-нибудь изменилось? Проактивка ловит попытку послать сообщение родительскому процессу, пока не могу найти откуда.
Не решу, как быть - вернуться на 1.2.2 или пилить :smile: _GetApiInfo() пришлось скопировать из 1.2.2
 

Skif_off

Знающий
Сообщения
173
Репутация
13
asdf8
Если скрипт в UTF-8, то TidySource превращает кириллицу в такое
Код:
$110 = 'Ů⡢鳼 ᢫﫧

В чём может быть дело?
Попробовал сохранить и скрипт, и TidySource в UTF-8 - та же фигня.

До кучи не заметил сразу:
Код:
Global $0 = @OSVersion
;в первой строке превращается в
bal $0 = @OSVersion

Это уже из-за BOM, похоже.

З.Ы. Гоняю PreExpand, утилита на выходе выдаёт UTF-8 without (!) BOM. Я бы понял, если бы все пользовались исключительно CP1252, но с учётом CP1250, CP1251, CP1253-CP1258 выбор несколько спорный...
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Skif_off [?]
Если скрипт в UTF-8, то TidySource превращает кириллицу в такое

Видимо дело в алгоритме обмена текстом между SciTE и TidySource.

TidySource получает текст исходника так:
для файла :
Код:
$str = FileRead($sFile)


из SciTE :
Код:
$s_Text = ControlGetText($hSciTE, '', $hCtrl1)
$s_Text = BinaryToString(StringToBinary($s_Text, 2), 1)


В общем, чтобы, кроме ANSI, поддерживалось еще что-то, нужно добавлять анализатор кодировок текста.
 

Skif_off

Знающий
Сообщения
173
Репутация
13
asdf8 сказал(а):
Видимо дело в алгоритме обмена текстом между SciTE и TidySource.
У меня скрипт подпилен на предмет работы без SciTE :smile:, добавлю проверку кодировки.
UTF-8 без BOM ещё обязательно вылезет боком, не понимаю автора PreExpand - географии не было в школе? Ведь все программы когда-нибудь лажают с определением кодировки, некоторым даже charset="ххх" не аргумент.

А почему так
Код:
$s_Text = BinaryToString(StringToBinary($s_Text, 2), 1)

, вдруг текст не в ANSI?
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Skif_off [?]
вдруг текст не в ANSI?

Когда я писал TidySource с этим проблем не было - даже враппер предупреждал, что UTF-8 не поддерживается.
В последних беттах FileRead, опять же, по умолчнию открывает файл в юникоде.
 

Skif_off

Знающий
Сообщения
173
Репутация
13
asdf8
Что-то слегка затупил :smile: Изменения в связи с кодировкой (версии 1.2.6):
Код:
;;;строка 273
;было:
$str = FileRead($sFile)
;исправлено на:
$iEncoding = 0
$iGetEncoding = FileGetEncoding($sFile)
If $iGetEncoding = '-1' Then
    $iEncoding = 0
Else
    $iEncoding = $iGetEncoding
EndIf
$hFile = FileOpen($sFile, $iEncoding)
$str = FileRead($hFile)
$str = BinaryToString(StringToBinary($str, 2), 2)

;;;строка 946
;было:
$file = FileOpen($outFile, 10)
;исправлено на:
$file = FileOpen($outFile, 2 + 8 + $iEncoding)

;;;строка 972
;было:
$file = FileOpen($sFile, 2)
;исправлено на:
$file = FileOpen($sFile, 2 + $iEncoding)
Не пойму, почему работает правильно если я ещё не успел подумать об обратной перекодировке из юникода в ту, которая была у файла?
"Правильность" проверяю на кириллице, ANSI/UTF-8 (with/without BOM)/UTF-16 LE - никаких кракозябр.

К слову о крайней бете 3.3.13.19: добавлен флаг 512 = Use ANSI reading and writing mode, совпадающий с флагами FileGetEncoding() - кажется, проблем после обновления не будет.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Skif_off [?]
Не пойму, почему работает правильно если я ещё не успел подумать об обратной перекодировке из юникода в ту, которая была у файла?

Это и есть перекодировка в ту, которая была у файла :

Код:
;;;строка 946
;было:
$file = FileOpen($outFile, 10)
;исправлено на:
$file = FileOpen($outFile, 2 + 8 + $iEncoding)
 

Skif_off

Знающий
Сообщения
173
Репутация
13
asdf8
Спасибо, не подумал, что всё так просто :smile:
 

Skif_off

Знающий
Сообщения
173
Репутация
13
ivanius
1.2.6 выше в теме, 1.2.2 брал с офсайта.
В 1.2.6 более тесная интеграция с SciTE, чем 1.2.2

В аттаче au3.api 3.3.8.1 - 3.3.12.0 (или даже 3.3.6.1 - 3.3.13.19, не помню уже).
 

Вложения

  • au3.api.zip
    99.8 КБ · Просмотры: 5

Skif_off

Знающий
Сообщения
173
Репутация
13
asdf8
Возможно ли добавить код выхода (Exit 0), если всё прошло успешно?
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Skif_off [?]
Возможно ли добавить код выхода (Exit 0), если всё прошло успешно?

Код выхода 0 возвращается из процесса автоматически, возможно имелось в виду возвращение ненулевого кода выхода при наличии ошибки?
 

Skif_off

Знающий
Сообщения
173
Репутация
13
asdf8
Код выхода 0 возвращается автоматически, если скрипт успешно отработал, но нет связи с наличием/отсутствием ошибок в обрабатываемом скрипте. Думал добавить здесь
Код:
If StringCompare(StringStripWS($sOut, 8), $sForTest) Then
	_ConsoleWrite($Lng_44 & @CRLF)
	Local $file, $outFile
	$outFile = StringRegExpReplace($sFile, '(\.[^\.]*)$', '_BadTidySource\1')
	$file = FileOpen($outFile, 2 + 8 + $iEncoding)
	FileWrite($file, $sOut)
	FileClose($file)
	_ConsoleWrite('Сохранен файл : ' & $outFile & @CRLF)
	Exit
EndIf

Exit 1 и Exit 0, наверное, после бэкапа и сообщения
Код:
_ConsoleWrite($Lng_39 & @CRLF)

А дальше несколько в растерянности :smile:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
asdf8, а можно обновить шапку с актуальной версией, а то вложения потерялись.
 
Верх