èablony

┌vod

èablony jsou nejv²raznějÜφ novinkou verze 2.0 a umo₧ňujφ velmi přφjemně uÜetřit prßci. Stačφ napsat pßr znaků a zbytek za vßs vygeneruje rkEdit. Představte si, ₧e napφÜete napřφklad proc a aplikace za vßs nejen₧e vygeneruje napřφklad tento text:

 

//---procedure Myproc, created at 11:40, 4. zßřφ 2001---

procedure Myproc;

begin {MyProc}

  |

end;{MyProc}

 

ale navφc dokß₧e postavit kursor na po₧adovanΘ mφsto a jeÜtě automaticky doplnit tzv. proměnnΘ (viz dßle).

 

Co je k tomu potřeba? Ka₧d² typ souboru, kter² rkEdit podporuje, musφ mφt v adresßři Templates svůj soubor se Üablonami (přesnΘ nßzvy viz Typy souborů). Pokud tento neexistuje, vezme se soubor default.xml. (Pokud ani ten neexistuje, mßte smůlu.)

 

V tomto souboru jsou definovßny jednotlivΘ Üablony (bude popsßno dßle). Pokud tedy v textu stisknete klßvesovou zkratku Ctrl+J, dojde k některΘ z nßsledujφcφch situacφ:

 
Uveďme to na přφkladě.
 
Pokud mßte Üablony, kterΘ se aktivujφ slovy:
 
proc
ifs
ifc
 
pak pokud napφÜete p, pr, pro či proc, aktivuje se prvnφ Üablona. Pokud napφÜete i či if, zobrazφ se seznam o dvou polo₧kßch. Pokud napφÜete ifs či ifc, aktivuje se druhß resp. třetφ Üablona. Pokud napφÜete cokoliv jinΘho, zφskßte seznam vÜech třφ Üablon (algoritmus je stejn² jako v přφpadě Delphi).
 

Jak si napsat Üablonu

èablony jsou definovßny v XML souboru, jeho₧ struktura je popsßna v souboru TEMPLATES.DTD. Ukßzkou toho, jak takov² soubor mů₧e vypadat, je soubor default.xml (je standardně dodßvßn s rkEditem), tak₧e pokud XML neovlßdßte, mů₧e vßm tento v lecčems pomoci. Způsob prßce s těmito soubory byl popsßn v²Üe.

 

Za zmφnku stojφ tyto atributy elementu template:

 

Textem Üablony mů₧e b²t v podstatě cokoliv, co mß v²znam a nenaruÜφ strukturu XML dokumentu. Mφsto, kam se mß po provedenφ Üablony umφstit kurzor, se označφ kolmφtkem.

 

Pokud chcete vklßdat znaky jako je <, >, & apod. pak musφ samozřejmě dbßt na to, aby nebyla naruÜena struktura XML dokumentu. Toho dosßhnete napřφklad tφm, ₧e si jako text Üablony napφÜete napřφklad:

 

<head><title>...</title></head>

 

označφte tento text jako blok a z menu Special zvolφte přφkaz Text to XML safe form. Označen² text se převede pomocφ textov²ch entit do takovΘho stavu, ve kterΘm bude vÜe v pořßdku a Üablonu půjde načφst. V tomto přφpadě do nßsledujφcφ podoby:

 

&lt;head&gt;&lt;title&gt;...&lt;/title&gt;&lt;/head&gt;

 

Pokud editujete Üablonu v rkEditu (v čem takΘ jinΘm, ₧e ;-), tak při testovßnφ jistě budete potřebovat tuto Üablonu načφtat znovu a znovu. K tomu slou₧φ přφkaz v menu Settings s nßzvem Refresh actual templates.

Pou₧φvßnφ proměnn²ch

V jednotliv²ch Üablonßch lze pou₧φvat i proměnnΘ. V tomto přφpadě se nejednß o ₧ßdnou XML vymo₧enost, ale o vymo₧enost rkEditu. Představte si, ₧e potřebujete napřφklad u vaÜich nov²ch podprogramů zadat nejen nßzev, ale i datum a čas vytvořenφ a jmΘno tvůrce. Nebo v novΘm souboru v projektu zadßvßte kromě ostatnφho svůj e-mail a dalÜφ. Proč to dělat ručně, kdy₧ to jde zautomatizovat?

 

Proměnnß znamenß libovoln² text v těle Üablony uzavřen² do procentφtek, tedy napřφklad %email%. V rkEditu si pak mů₧ete definovat vlastnφ hodnoty pro ka₧dou proměnnou (viz dßle). V jednΘ firmě pak lze mφt jednu Üablonu pro nespočetně lidφ.

 

Nßzvy proměnn²ch mohou b²t zcela libovolnΘ (a₧ na v²jimky definovanΘ dßle), vÜe zßvisφ na vaÜich potřebßch.

Jak si definovat hodnoty proměnn²ch

V menu Settings je polo₧ka Edit templates' variables. Ta vyvolß dialog podobn² tomuto:

 

Prßvě zde si definujte nßzev proměnnΘ a jejφ hodnotu jako je to provedeno napřφklad u proměnnΘ FirstName. Tato hodnota pak bude vyplněna za uvedenou proměnnou. Přidßnφ dalÜφ proměnnΘ lze napřφklad stiskem kurzorovΘ klßvesy èipka dolů na poslednφm řßdku, smazßnφ proměnnΘ lze pomocφ klßvesovΘ zkratky Ctrl+Del.

VestavěnΘ proměnnΘ

V rkEditu jsou některΘ proměnnΘ definovßny automaticky a majφ svůj specifick² v²znam:

 

date

Vlo₧enφ aktußlnφho datumu dle zadanΘho formßtu. Pokud nenφ ₧ßdn² formßt zadßn, je vzat přednastaven² ze systΘmu. Formßtovacφm řetězcem lze řφct, aby byl vlo₧en i čas.

time

Vlo₧enφ aktußlnφho času dle zadanΘho formßtu. Pokud nenφ ₧ßdn² formßt zadßn, je vzat přednastaven² ze systΘmu. Formßtovacφm řetězcem lze řφct, aby byl vlo₧en i datum.

guid

Vlo₧φ nově vygenerovanΘ GUID

filename

Vlo₧φ nßzev souboru (pokud je tento ji₧ ulo₧en)

fullfilename

Vlo₧φ nßzev souboru včetně cesty (pokud je tento ji₧ ulo₧en)

input

Zde se uplatňuje atribut elementu template inputdesc. Při zadßnφ tΘto proměnnΘ budete dotßzßni na řetězec, kter² bude vlo₧en mφsto tΘto proměnnΘ.

input1..input10

Jestli₧e potřebujete od u₧ivatele vφce ne₧ jeden vstup, pak mφsto proměnnΘ input pou₧ijte a₧ deset těchto proměnn²ch. Od u₧ivatele bude po₧adovßn vstup vÜech uveden²ch proměnn²ch v jedinΘm dialogu. Texty ke ka₧dΘmu vstupu se budou brßt z atributů alementu template nazvan²ch inputdesc1 a₧ inputdesc10

block

Za tuto proměnnou bude vlo₧en text, kter² je označen v bloku; obecně platφ, ₧e pokud je při vyvolßnφ Üablony označen blok, je tento nahrazen Üablonou

ProměnnΘ systΘmu

Pokud rkEdit nenalezne nßzev proměnnΘ, sna₧φ se zjistit, zde neexistuje i takovΘ proměnnß systΘmu. Pokud existuje, pak je nahrazena prßvě jejφ hodnotou. Přφkladem mů₧e b²t např. proměnnß systΘmu %path%.

Přφklad Üablony

Mějme napřφklad tuto Üablonu:

 

  <template shortcut="proc" name="Procedure" inputdesc="Enter procedure name:">

    //------------------------------------------------------------------

    //   Procedure %input%

    //   created by %firstname% %othername% %surname% at %date% %time%

    //   soubor: %filename%

    //------------------------------------------------------------------

    procedure %input%;

    const

      GUID = ['%guid%'];

    begin {%input%}

      |

    end; {%input%}

  </template>

 

Po spuÜtěnφ tΘto Üablony budeme dotßzßnφ na zadßnφ hodnoty proměnnΘ input:

 

a nßsledně se vygeneruje tento text:

 

//------------------------------------------------------------------

//   Procedure MyProc

//   created by Slßvek %othername% Rydval at ·ter², 14. 08. 2001 17:58.26

//   soubor:

//------------------------------------------------------------------

procedure MyProc;

const

 GUID = ['{BC75846B-9410-4877-9136-57EB73F0FC54}'];

begin {MyProc}

  

end; {MyProc}

 

VÜimněte si několika věcφ: