Archív Inet.sk Pôvodný autor: Július Pastierik
17. 11. 2010 o 00:00 1693x

Makrá v OpenOffice.org – farebné označovanie Basic Kódu (I)

Uvádzate vo vašich dokumentoch zdrojové kódy programov napr. v jazyku OpenOffice.org (StarOffice) Basic a chcete ich farebne zvýrazniť tak isto, ako to robí modul OpenOffice.org Basic? Naprogramujte si na tento účel makrá.
Makrá v OpenOffice.org – farebné označovanie Basic Kódu (I)

Nielen pri tvorbe dokumentácie, ale napr. aj pri tvorbe knihy o programovaní je vhodné farebne zvýrazniť syntax programov. Pravdaže, na internete je k dispozícii pre OpenOffice.org napr. rozšírenie Coooder, ktoré však, paradoxne, nedokáže správne zvýrazniť syntax jazyka OpenOffice.org Basic. Navyše, niekedy si chcete vytvoriť vlastný spôsob zvýrazňovania aj pre iné jazyky.

Aby ste to mohli urobiť, ukážeme si v niekoľkých dieloch makrá, ktoré zvýrazňujú syntax tak isto, ako to robí modul OpenOffice.org Basic. V týchto makrách zároveň uvidíte problematiku, ktorú musíte v týchto prípadoch riešiť, takže si následne, podľa svojich potrieb, dokážete vytvoriť makrá aj pre iné programovacie jazyky.

Skôr, ako sa budeme venovať vlastným makrám si musíme stručne naznačiť problematiku vyznačovania syntaxe. Pri tomto postupe musíme vlastne analyzovať riadky programu, aby sme dokázali rozoznať jednotlivé časti, ktoré chceme osobitne zvýrazniť. V prípade jazyka OpenOffice.org Basic sú to kľúčové slová (príkazy, niektoré matematické či logické operátory a pod.), špeciálne znaky (matematické operátory, zátvorky, logické operátory a pod.), čísla (desiatkové alebo hexadecimálne a to celé, desatinné či exponenciálne), reťazce, oddeľovače slov atď.

Pri tomto musíme ďalej pamätať na rôzne špeciálne veci, ako je kľúčové slovo REM, ktoré vyznačuje komentár, ktorý sa (vrátane tohto kľúčového slova) zvýrazňuje inak, ako ostatné kľúčové slová; znak podčiarnika, ktorý môže byť nielen ako súčasť názvu premennej, ale na konci riadku znamená, že príkaz pokračuje na riadku nasledujúcom; časti uzatvorené do párov znakov (reťazce medzi úvodzovky, názvy premenných uzatvorených medzi hranaté zátvorky...), kedy sa inak zvýrazňuje uzatvorený text (napr. reťazec, ktorý má na začiatku aj konci úvodzovku) a inak neuzatvorený (napr. reťazec, ktorému chýba záverečná úvodzovka) atď.

Venujme sa však už vlastným makrám. Aby sme nájdené časti mohli následne farebne označiť, pripravíme si textové štýly, v ktorých nastavíme také farby, aké používa OpenOffice.org Basic. Tieto štýly budeme následne aplikovať na tie analyzované časti textu, ktoré zodpovedajú príslušnému označeniu.

Pred uvedením zdrojových textov makier ešte podotýkame, že pri ich tvorbe boli použité ako inšpirácia makrá Andrewa Pitonyaka, ktoré však neobsahujú úplnú analýzu všetkých možností jazyka OpenOffice.org Basic, neobsahujú všetky farebné zvýraznenia, ktoré používa OpenOffice.org a niektoré časti programového kódu analyzujú nesprávne.

REM Makrá pre farebné označovanie StarOffice (OpenOffice.org) Basic kódu
REM Inšpirácia – makrá Andrewa Pitonyaka


REM Makrá pre definície štýlov
REM Vytvorenie "PropertyValue" štruktúry

function Vytvor_Property(Nazov as String, Hodnota) as com.sun.star.beans.PropertyValue

 dim oPropertyValue as New com.sun.star.beans.PropertyValue

 oPropertyValue.Name=Nazov

 oPropertyValue.Value=Hodnota

 Vytvor_Property()=oPropertyValue

end function


REM Vytvorenie znakových štýlov (ak neexistujú)

sub Vytvor_Znakovy_Styl(Nazov_Stylu as string, oParametre())

 dim i as integer

 dim oSkupinyStylov, oStyl, oZnakoveStyly

 

 oSkupinyStylov=ThisComponent.StyleFamilies ' Skupiny štýlov

 oZnakoveStyly=oSkupinyStylov.getByName("CharacterStyles") ' Znakové štýly

 if oZnakoveStyly.HasByName(Nazov_Stylu) then exit sub ' Štýl existuje – procedúru ukončíme

 oStyl=ThisComponent.createInstance("com.sun.star.style.CharacterStyle")

 for i=LBound(oParametre) to UBound(oParametre) ' Pre všetky nastavované parametre

  if oParametre(i).Name = "ParentStyle" then ' Ak nastavujeme rodičovský štýl

   if oZnakoveStyly.HasByName(oParametre(i).Value) then ' Test, či rodičovský štýl existuje

    oStyl.ParentStyle=oParametre(i).Value ' Názov rodičovského štýlu

   end if

  else

   oStyl.setPropertyValue(oParametre(i).Name, oParametre(i).Value) ' Nastavenie ostatných parametrov

  end if

 next

 oZnakoveStyly.insertByName(Nazov_Stylu, oStyl) ' Vloženie štýlu do zoznamu štýlov

end sub



REM Definícia a vytvorenie znakových štýlov

sub Definuj_Znakove_Styly

 dim oParametre()

 

 REM Jazyk nastavíme na "žiaden"

 dim Ziaden_Jazyk as New com.sun.star.lang.Locale

 Ziaden_Jazyk.Country = ""

 Ziaden_Jazyk.Language = "zxx"

 

 REM Nastavenie rodičovského štýlu – pomocou neho možno zmeniť font a veľkosť aj ostatných štýlov

 REM Tento štýl je možné použiť pri písaní (aby bol zvýraznený kód aspoň fontom),

 REM pretože zafarbenie textu sa robí až po jeho výbere

 REM a spustení procedúry Formatuj_Vybrany_Text

 

 REM Font "Courier", žiaden jazyk, čierne písmo, nedeliť slová

 oParametre() = Array(Vytvor_Property("CharFontName", "Courier"), _

  Vytvor_Property("CharLocale", Ziaden_Jazyk), _

  Vytvor_Property("CharColor", RGB(0, 0, 0)), _

  Vytvor_Property("CharNoHyphenation", True))

 Vytvor_Znakovy_Styl("OOoBasicKod", oParametre()) ' Vlastné vytvorenie rodičovského znakového štýlu "OOoBasicKod"

 

 REM Štýly závislé na rodičovskom štýle pomenujeme s podčiarnikom, aby to bolo zrejmé už z ich názvu

 REM Nastavenie štýlu pre príkazy (kľúčové slová) a špeciálne znaky – modré písmo (HTML #000080)

 oParametre() = Array(Vytvor_Property("ParentStyle", "OOoBasicKod"), _

  Vytvor_Property("CharLocale", Ziaden_Jazyk), _

  Vytvor_Property("CharColor", RGB(0, 0, 128), _

  Vytvor_Property("CharNoHyphenation", True))

 Vytvor_Znakovy_Styl("_OOoBasicPrikazy", oParametre())

 

 REM Nastavenie štýlu pre premenné a konštanty (napr. true) – zelené písmo (HTML #008000)

 oParametre() = Array(Vytvor_Property("ParentStyle", "OOoBasicKod"), _

 Vytvor_Property("CharLocale", Ziaden_Jazyk), _

  Vytvor_Property("CharColor", RGB(0, 128, 0), _

  Vytvor_Property("CharNoHyphenation", True))

 Vytvor_Znakovy_Styl("_OOoBasicPremenne", oParametre())

 

 REM Nastavenie štýlu pre reťazce a čísla – červené písmo (HTML #FF0000)

 oParametre() = Array(Vytvor_Property("ParentStyle", "OOoBasicKod"), _

  Vytvor_Property("CharLocale", Ziaden_Jazyk), _

  Vytvor_Property("CharColor", RGB(255, 0, 0), _

  Vytvor_Property("CharNoHyphenation", True))

 Vytvor_Znakovy_Styl("_OOoBasicRetazec", oParametre())

 

 REM Nastavenie štýlu pre neukončené reťazce a názvy v hranatých zátvorlách – tmavočervené písmo (HTML #800000)

 oParametre() = Array(Vytvor_Property("ParentStyle", "OOoBasicKod"), _

  Vytvor_Property("CharLocale", Ziaden_Jazyk), _

  Vytvor_Property("CharColor", RGB(128, 0, 0), _

  Vytvor_Property("CharNoHyphenation", True))

 Vytvor_Znakovy_Styl("_OOoBasicNeukoncene", oParametre())

 

 REM Nastavenie štýlu pre komentáre – šedé písmo (HTML #808080)

 oParametre() = Array(Vytvor_Property("ParentStyle", "OOoBasicKod"), _

  Vytvor_Property("CharLocale", Ziaden_Jazyk), _

  Vytvor_Property("CharColor", RGB(128, 128, 128), _

  Vytvor_Property("CharNoHyphenation", True))

 Vytvor_Znakovy_Styl("_OOoBasicKomentar", oParametre())

 

 REM Nastavenie štýlu pre znaky uvedené dvojbodkou a pre otáznik – šedofialové písmo (HTML #624A7C)

 oParametre() = Array(Vytvor_Property("ParentStyle", "OOoBasicKod"), _

  Vytvor_Property("CharLocale", Ziaden_Jazyk), _

  Vytvor_Property("CharColor", RGB(98, 74, 124), _

  Vytvor_Property("CharNoHyphenation", True))

 Vytvor_Znakovy_Styl("_OOoBasicDvojbodka", oParametre())

 

 REM Nastavenie štýlu pre iné znaky – čierne písmo (HTML #000000)

 oParametre() = Array(Vytvor_Property("ParentStyle", "OOoBasicKod"), _

  Vytvor_Property("CharLocale", Ziaden_Jazyk), _

  Vytvor_Property("CharColor", RGB(0, 0, 0), _

  Vytvor_Property("CharNoHyphenation", True))

 Vytvor_Znakovy_Styl("_OOoBasicIne", oParametre())

end sub

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac
Plánovaná údržba v datacentre (20.09.2026) Oznamy
07. 09. 2026

Plánovaná údržba v datacentre (20.09.2026)

Stabilita a nepretržitá dostupnosť vašich webov je pre nás kľúčová. Aby sme tento štandard nielen udržali, ale neustále zvyšovali, naši p...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies