' getMail.vbs
'========================   Описание   =====================================
' Извлекает e-mail адреса из выделенного текста и отображает их в новой вкладке
' Если ничего не выделено, адреса извлекаются из всего текста

' -"Извлечение e-mail адресов" +Call("Scripts::Main", 1, "getMail.vbs")

' используется Functions.vbs, который следует положить ...AkelFiles\Plugs\Scripts\Include\

' Автор:           Аверин Андрей
' Версия:          1.7 (17.03.2011 - 08.09.2012)
' Mail:            Averin-And@yandex.ru
' Site:            http://tc-image.3dn.ru/forum/9-370-1134-16-1333617560
' Site:            http://akelpad.sourceforge.net/forum/viewtopic.php?p=13870#13870
'===========================================================================
With AkelPad If .GetEditWnd() = 0 Then WScript.Quit()
  tTxt = .GetSelText()
  If Len(tTxt) = 0 Then tTxt = .GetTextRange(0, -1)
  If Len(tTxt) = 0 Then Wscript.Quit
  Txt = Split(tTxt, Chr(13))

  For i = 0 To Ubound(Txt)
    If InStr(Txt(i), "@") > 0 Then Text = Text & Txt(i) & Chr(32)
  Next

  CllStr = "/*?><%[]()*^\<>&=|'~`!+%;:$#№" & Chr(34) & vbTab & vbVerticalTab & vbLf & vbFormFeed & vbCr & vbCrLf
  Call .Include("Functions.vbs")
  tTxt = ReplSymbols(Text, CllStr, Chr(32)) : Text = ""
  tTxt = RegExpReplace(tTxt, "( )+", Chr(32), 0, 1, 1)
  Txt = DelDublicateArr(Split(tTxt, Chr(32)))
  For i = 0 To Ubound(Txt)
    A = Txt(i)
    If Len(A) > 5 Then
       If Instr(A, "@") > 0 And Instr(A, ".") > 0 And Left(A, 1) <> "@" And Right(A, 1) <> "@" Then Text = Text & Txt(i) & vbNewLine
    End If
  Next
  Call CreateNewTab
  Call SetRedraw(.GetEditWnd(), False)
  Call .ReplaceSel(DelDublicateStr(Text, vbNewLine))
  Call .SendMessage(.GetEditWnd(), 3087, False, 0)
  Call .SendMessage(.GetEditWnd(), 3079, 0, 0)
  Call .SetSel(0, 0)
  Call SetRedraw(.GetEditWnd(), True)
End With