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.
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk