Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <File.au3>
- ;~ массив заголовков подгружаем из отдельного файла, чтобы не перегружать файл сценария
- #include "dahl.hdws.au3"
- Global $csTITLE = "Process DAL's dictionary"
- Global $sSource = @ScriptDir & "\dal.sorted.txt"
- Global $sTarget = @ScriptDir & "\dal.new.txt"
- Global $aSource, $aStr, $sPrevHeadword
- Global $iTmr = TimerInit()
- ProgressOn($csTITLE, '', 'Create Source Array...')
- ;~ считываем исходный файл словаря в массив
- _FileReadToArray($sSource, $aSource)
- ;~ создаем массив для целевого файла словаря
- Global $aTarget[$aSource[0]+1]
- ;~ приращение для полосы прогресса
- Global $iIncr = $aSource[0] / 100
- ;~ переключатель понадобится ниже
- Global $bSwitcher = False
- For $i = 1 To $aSource[0]
- ;~ смотрим на структуру строки: карточка ли это?
- $aStr = StringRegExp($aSource[$i], '(?m)\t\\?\[?<b>([^<]+)</b>', 2)
- If @error Then
- ;~ совпадения нет, значит заголовок, просто копируем строку в целевой файл
- $aTarget[$i] = $aSource[$i]
- Else
- $aStr[1] = StringLower($aStr[1])
- $aStr[1] = StringReplace($aStr[1], "'", "")
- $aStr[1] = StringReplace($aStr[1], "’", "")
- $aStr[1] = StringReplace($aStr[1], "і", "и")
- $aStr[1] = StringReplace($aStr[1], "ѳ", "ф")
- $aStr[1] = StringReplace($aStr[1], "ѣ", "е")
- $aStr[1] = StringReplace($aStr[1], "ѵ", "и")
- $aStr[1] = StringReplace($aStr[1], "ì", "и")
- $aStr[1] = StringReplace($aStr[1], "í", "и")
- $aStr[1] = StringReplace($aStr[1], "ї", "и")
- $aStr[1] = StringReplace($aStr[1], "ъ-", "-")
- $aStr[1] = StringReplace($aStr[1], "ъ ", " ")
- $aStr[1] = StringRegExpReplace($aStr[1], "(?m)ъ$", "")
- If $aStr[1] = $aSource[$i-1] Then
- $aTarget[$i] = $aSource[$i]
- Else
- If $aStr[1] = $sPrevHeadword Then
- $aTarget[$i] = @TAB & "См. [ref]" & $aStr[1] & "[/ref]"
- Else
- $bSwitcher = True
- For $j = 1 To $aHeadwords[0]
- If $aStr[1] = $aHeadwords[$j] Then
- $aTarget[$i] = @TAB & "См. [ref]" & $aStr[1] & "[/ref]"
- $sPrevHeadword = $aStr[1]
- $bSwitcher = False
- ExitLoop
- EndIf
- Next
- If $bSwitcher Then $aTarget[$i] = $aSource[$i]
- EndIf
- EndIf
- EndIf
- If Mod($i,10) = 0 Then
- ProgressSet($i / $iIncr, $i &' of '& $aSource[0] &' lines processed...')
- EndIf
- Next
- Global $hTarget = FileOpen($sTarget, 32+1)
- _FileWriteFromArray($hTarget, $aTarget, 1)
- FileClose($hTarget)
- Sleep(500)
- ProgressOff()
- Local $iTmrDiff = Round(TimerDiff($iTmr)/1000,0)
- Local $iSec = StringFormat("%02d",Mod($iTmrDiff,60))
- Local $iMin = StringFormat("%02d",Mod(Round($iTmrDiff/60,0),60))
- Local $iHr = StringFormat("%02d",($iTmrDiff/60)/60,0)
- MsgBox(64,$csTITLE,'The task is done.' &@LF&@LF& 'Task process in time:' &@LF& $iHr&':'&$iMin&':'&$iSec)
- ; ============================================ Made in AkelPad ==================================== ;
- ; ================================================= КИБНС ========================================= ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement