Makrá v OpenOffice.org 5/XV. – Formátovanie dokumentu 7

Július Pastierik  /  18. 04. 2007, 00:00

V ďalšom pokračovaní programovania makier v OpenOffice.org sa budeme venovať funkciám pre vymazávanie viacnásobných medzier a odstraňovaniu prázdnych odstavcov.

Naposledy sme si uviedli všeobecné makrá pre vyhľadávanie a nahrádzanie textu. Dnes budeme pokračovať v už konkrétnych formátovacích makrách a začneme makrami pre mazanie viacnásobných medzier a odstraňovaním prázdnych odstavcov. Myslíme si, že vzhľadom na rozsah iba makra pre odstraňovanie medzier je toho viac než dosť, pretože toto makro prekonalo veľmi veľké zmeny a vlastne spojilo do seba viacero drobných podprogramov.

REM Makro pre odstraňovanie viacnásobných medzier
function f_Viacnasobna_Medzera (viacnasobne, odstavce, uvodzovky, zatvorky, znamienka as integer) as long
 ' Funkcia odstráni medzery podľa parametrov (ak sa =1, tak platia):
 ' viacnasobne - odtsránenie viacnásobných medzier v strede dokumentu
 ' odstavce - odstránanie viacnásobných medzier na začiatku a konci odstavca
 ' zatvorky - odstránenie medzery medzi zátvorkou a textom
 ' uvodzovky - odstránenie medzery medzi úvodzovkou a textom
 ' znamienka - odstránenie medzery medzi znamienkami a textom

 dim kolko as Long
 dim hladany_retazec as string
 kolko=0

 if viacnasobne=1 then
  kolko=kolko+Vymen("  +"," ", TRUE, false, false)
  kolko=kolko+Vymen(" "+NM+" |"+NM+" | "+NM, NM, TRUE, false, false)
  kolko=kolko+Vymen(" \t |\t | \t","\t", TRUE, false, false)
 endif

 if odstavce=1 then
  kolko=kolko+Vymen("^[: space:]*|[: space:]*$","", TRUE, false, false)
  kolko=kolko+Vymen("^\t*|\t*$","", TRUE, false, false)
 endif

 ' Makro naprogramujeme tak, aby čo nejmenejkrát prechádzalo dokumentom
 ' T.j. najprv si pripravíme kompletný regulárny výraz a až potom budeme prevádzať výmeny
 hladany_retazec=""
 if uvodzovky=1 then
  ' Nastavíme si regulárny výraz pre ľavé úvodzovky
  hladany_retaz="(„|«|"+chr$(&H22)
 endif
 if zatvorky=1 then
  ' Nastavíme si regulárny výraz pre ľavé zátvorky
  if hladany_retazec<>"" then
   ' Ak už máme úvodzovky, musíme pridať znak "alebo"
   hladany_retazec=hladany_retazec+"|"
  else
   ' Ešte nemáme nič, musíme zadať začiatok regulárneho výrazu
   hladany_retazec="("
  endif
  hladany_retazec=hladany_retazec+"\(|\[|{"
 endif
 if hladany_retazec<>"" then
  ' Ešte ukončíme regulárny výraz
  hladany_retazec=hladany_retazec+")"
  ' Ak máme nastavený výraz pre zátvorky alebo úvodzovky, tak vymažeme nadbytočné medzery
  ' Za nadbytočné medzery považujeme obyčajné medzery, NBSP a tabelátory
  kolko=kolko+Vymen_hladanim(hladany_retazec+" "," ","", true, false, false)
  kolko=kolko+Vymen_hladanim(hladany_retazec+NM, NM,"", true, false, false)
  kolko=kolko+Vymen_hladanim(hladany_retazec+TAB, TAB,"", true, false, false)
 endif

 hladany_retazec=""
 if uvodzovky=1 then
  ' Nastavíme si regulárny výraz pre pravé úvodzovky
  hladany_retaz="(“|»|"+chr$(&H22)
 endif
 if zatvorky=1 then
  ' Nastavíme si regulárny výraz pre pravé zátvorky
  if hladany_retazec<>"" then
   ' Ak už máme úvodzovky, musíme pridať znak "alebo"
   hladany_retazec=hladany_retazec+"|"
  else
   ' Ešte nemáme nič, musíme zadať začiatok regulárneho výrazu
   hladany_retazec="("
  endif
  hladany_retazec=hladany_retazec+"\)|\]|}"
 endif
 if znamienka=1 then
  ' Nastavíme si regulárny výraz pre interpunkčné znamienka
  if hladany_retazec<>"" then
   ' Ak už máme úvodzovky alebo zátvorky, musíme pridať znak "alebo"
   hladany_retazec=hladany_retazec+"|"
  else
   ' Ešte nemáme nič, musíme zadať začiatok regulárneho výrazu
   hladany_retazec="("
  endif
  hladany_retazec=hladany_retazec+"\,|\.|!|\?|;|:|…"
 endif
 if hladany_retazec<>"" then
  ' Ešte ukončíme regulárny výraz
  hladany_retazec=hladany_retazec+")"
  ' Ak máme nastavený výraz pre zátvorky alebo úvodzovky, tak vymažeme nadbytočné medzery
  ' Za nadbytočné medzery považujeme obyčajné medzery, NBSP a tabelátory
  kolko=kolko+Vymen_hladanim(" "+hladany_retazec," ","", true, false, false)
  kolko=kolko+Vymen_hladanim(NM+hladany_retazec, NM,"", true, false, false)
  kolko=kolko+Vymen_hladanim(TAB+hladany_retazec, TAB,"", true, false, false)
 endif 
 f_Viacnasobna_Medzera=kolko
end function

REM Makro pre odstraňovanieprázdnych odstavcov
function f_Prazdny_odstavec as long
 kolko=Vymen("^$","", TRUE, false, false)
end function

Na budúce: Ostatné makrá pre formátovanie dokumentu, alebo pomaly sa dostávame ku koncu.


Neprehliadnite: