Advertisement
Guest User

Untitled

a guest
Dec 15th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 3.28 KB | None | 0 0
  1. #include <File.au3>
  2. ;~ массив заголовков подгружаем из отдельного файла, чтобы не перегружать файл сценария
  3. #include "dahl.hdws.au3"
  4.  
  5. Global $csTITLE = "Process DAL's dictionary"
  6. Global $sSource = @ScriptDir & "\dal.sorted.txt"
  7. Global $sTarget = @ScriptDir & "\dal.new.txt"
  8. Global $aSource, $aStr, $sPrevHeadword
  9.  
  10. Global $iTmr = TimerInit()
  11. ProgressOn($csTITLE, '', 'Create Source Array...')
  12.  
  13. ;~ считываем исходный файл словаря в массив
  14. _FileReadToArray($sSource, $aSource)
  15. ;~ создаем массив для целевого файла словаря
  16. Global $aTarget[$aSource[0]+1]
  17. ;~ приращение для полосы прогресса
  18. Global $iIncr = $aSource[0] / 100
  19. ;~ переключатель понадобится ниже
  20. Global $bSwitcher = False
  21.  
  22. For $i = 1 To $aSource[0]
  23.   ;~ смотрим на структуру строки: карточка ли это?
  24.   $aStr = StringRegExp($aSource[$i], '(?m)\t\\?\[?<b>([^<]+)</b>', 2)
  25.   If @error Then
  26.     ;~ совпадения нет, значит заголовок, просто копируем строку в целевой файл
  27.     $aTarget[$i] = $aSource[$i]
  28.   Else
  29.     $aStr[1] = StringLower($aStr[1])
  30.     $aStr[1] = StringReplace($aStr[1], "'", "")
  31.     $aStr[1] = StringReplace($aStr[1], "’", "")
  32.     $aStr[1] = StringReplace($aStr[1], "і", "и")
  33.     $aStr[1] = StringReplace($aStr[1], "ѳ", "ф")
  34.     $aStr[1] = StringReplace($aStr[1], "ѣ", "е")
  35.     $aStr[1] = StringReplace($aStr[1], "ѵ", "и")
  36.     $aStr[1] = StringReplace($aStr[1], "ì", "и")
  37.     $aStr[1] = StringReplace($aStr[1], "í", "и")
  38.     $aStr[1] = StringReplace($aStr[1], "ї", "и")
  39.     $aStr[1] = StringReplace($aStr[1], "ъ-", "-")
  40.     $aStr[1] = StringReplace($aStr[1], "ъ ", " ")
  41.     $aStr[1] = StringRegExpReplace($aStr[1], "(?m)ъ$", "")
  42.     If $aStr[1] = $aSource[$i-1] Then
  43.       $aTarget[$i] = $aSource[$i]
  44.     Else
  45.       If $aStr[1] = $sPrevHeadword Then
  46.         $aTarget[$i] = @TAB & "См. [ref]" & $aStr[1] & "[/ref]"
  47.       Else
  48.         $bSwitcher = True
  49.         For $j = 1 To $aHeadwords[0]
  50.           If $aStr[1] = $aHeadwords[$j] Then
  51.             $aTarget[$i] = @TAB & "См. [ref]" & $aStr[1] & "[/ref]"
  52.             $sPrevHeadword = $aStr[1]
  53.             $bSwitcher = False
  54.             ExitLoop
  55.           EndIf
  56.         Next
  57.         If $bSwitcher Then $aTarget[$i] = $aSource[$i]
  58.       EndIf
  59.     EndIf
  60.   EndIf
  61.   If Mod($i,10) = 0 Then
  62.     ProgressSet($i / $iIncr, $i &' of '& $aSource[0] &' lines processed...')
  63.   EndIf
  64. Next
  65.  
  66. Global $hTarget = FileOpen($sTarget, 32+1)
  67. _FileWriteFromArray($hTarget, $aTarget, 1)
  68. FileClose($hTarget)
  69. Sleep(500)
  70.  
  71. ProgressOff()
  72.  
  73. Local $iTmrDiff = Round(TimerDiff($iTmr)/1000,0)
  74. Local $iSec = StringFormat("%02d",Mod($iTmrDiff,60))
  75. Local $iMin = StringFormat("%02d",Mod(Round($iTmrDiff/60,0),60))
  76. Local $iHr  = StringFormat("%02d",($iTmrDiff/60)/60,0)
  77. MsgBox(64,$csTITLE,'The task is done.' &@LF&@LF& 'Task process in time:' &@LF& $iHr&':'&$iMin&':'&$iSec)
  78.  
  79. ; ============================================ Made in AkelPad ==================================== ;
  80. ; ================================================= КИБНС ========================================= ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement