Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
Написал пока что для au3 скриптов, удаляет из au3 скрипта коментарии и пробелы, я знаю что компилятор AutoIt и без меня это делает, это просто для общего развития и дальнейшего применения, у кого есть время, протестируйте пожалуйста на скриптах разной сложности написания, если будут баги, пишите сюда. За функцию AutoItBlankDelete() отдельное спасибо Creator'у.
Код:
#NoTrayIcon
Global $aKeyWord = "ByRef" & @CRLF & _
"Const" & @CRLF & _
"ContinueCase" & @CRLF & _
"ContinueLoop" & @CRLF & _
"Default" & @CRLF & _
"Dim" & @CRLF & _
"Do" & @CRLF & _
"Until" & @CRLF & _
"Enum" & @CRLF & _
"Exit" & @CRLF & _
"ExitLoop" & @CRLF & _
"For" & @CRLF & _
"In" & @CRLF & _
"Func" & @CRLF & _
"EndFunc" & @CRLF & _
"Global" & @CRLF & _
"If" & @CRLF & _
"Then" & @CRLF & _
"ElseIf" & @CRLF & _
"Else" & @CRLF & _
"EndIf" & @CRLF & _
"Local" & @CRLF & _
"ReDim" & @CRLF & _
"Return" & @CRLF & _
"Select" & @CRLF & _
"Case" & @CRLF & _
"EndSelect" & @CRLF & _
"Switch" & @CRLF & _
"EndSwitch" & @CRLF & _
"True" & @CRLF & _
"With" & @CRLF & _
"EndWith" & @CRLF & _
"While" & @CRLF & _
"Wend" & @CRLF & _
"Or" & @CRLF & _
"And" & @CRLF & _
"Not" & @CRLF & _
"_"
AutoItScript(@ScriptDir & "\Test.au3")
Func AutoItScript($iScriptPatch)
Local $aTemp, $pTemp, $aCode, $aProcessing, $aComment, $aInit
$aCode = AutoItBlankDelete($iScriptPatch)
$aProcessing = StringSplit($aCode, "{blank}", 1)
For $i = 1 To UBound($aProcessing) -1
If StringRegExp($aKeyWord, StringStripWS($aProcessing[$i], 3)) = 1 Then
$aTemp &= " " & $aProcessing[$i] & " "
Else
$aTemp &= $aProcessing[$i]
EndIf
Next
$aComment = StringSplit($aTemp, @CRLF, 1)
For $i = 1 To UBound($aComment) -1
$aInit = StringSplit($aComment[$i], ";")
$pTemp &= $aInit[1] & @CRLF
Next
$aTemp = ""
FileWrite("Temp.au3", $pTemp)
EndFunc
Func AutoItBlankDelete($sAu3Scrypt)
Local $sResult
Local $sAu3Temp
$sAu3Open = FileOpen($sAu3Scrypt)
While 1
$sAu3Read = FileReadLine($sAu3Open)
If @error <> 0 Then ExitLoop
$sAu3Quotes = StringRegExp($sAu3Read, '("[^"]*"|''[^'']*'')', 3)
For $i = 0 To UBound($sAu3Quotes) - 1
$sAu3Read = StringReplace($sAu3Read, $sAu3Quotes[$i], '~Quote_' & $i)
Next
$sAu3Split = StringRegExp($sAu3Read, '(?!>")([^\h]+)(?!")', 3)
For $i = 0 To UBound($sAu3Split) - 1
If StringInStr($sAu3Split[$i], '~Quote_') Then
For $j = 0 To UBound($sAu3Quotes) - 1
$sAu3Split[$i] = StringReplace($sAu3Split[$i], '~Quote_' & $j, $sAu3Quotes[$j])
Next
EndIf
$sAu3Temp &= $sAu3Split[$i] & "{blank}" & @CRLF
Next
$sAu3Temp &= "{NewLine}" & @CRLF
WEnd
FileClose($sAu3Open)
$aAu3Split = StringSplit($sAu3Temp, @CRLF, 1)
$sAu3Src = ""
For $i = 1 To $aAu3Split[0]
If StringInStr($aAu3Split[$i], "{NewLine}") Then
$sAu3Src &= StringReplace($aAu3Split[$i], "{NewLine}", @CRLF)
Else
$sAu3Src &= $aAu3Split[$i]
EndIf
Next
Return $sAu3Src
EndFunc