Program web_compile slúži na vytvorenie adresárovej štruktúry (web-u) na základe konfiguračného súboru a šablónových súborov.
Konfiguračný súbor sa skladá zo sekcií, ktoré tvoria stromovú štruktúru. Na najvyššej úrovni môže byť len jedna sekcia. Sekcia má takýto formát:
názov { obsah }
Obsah sekcie tvoria buď ďalšie sekcie, alebo nastavenia premenných. Ak sa na jednom riadku nachádza viac sekcií alebo nastavení premenných, tak ich doporučujem oddelovať bodkočiarkou ';' ,alebo zátvorkami '(', ')'.
Nastavenia premenných majú takýto formát:
názov = hodnota
alebo aj viachodnotové
názov = hodnota1,hodnota2,hodnota3 ...
Ak je v jednej sekcii viackrát nastavovaná tá istá premenná, tak sa to chápe ako nastavenie ďalšej hodnoty. Okrem premenných začínajúcich znakom '@'.
Hodnota môže byť jedna z:
Hodnotu premennej je možné zreťaziť pomocou operátora bodka '.' . Príklad: text= "text1" . "text2" . <subor>;
Hodnotu premennej je možné tiež spracovať externým programom pomocou operátora '|' . Príklad použitia: text= "abc" | "tr [:lower:] [:upper:]"; alebo aj zložitejšie použitie: text= <subor1> . <subor2> | "egrep -v ^#" | "fold -s -w80";
Ak program začína znakom '@', tak bude prípadné zlyhanie programu ignorované.
V konfiguračnom súbore nezáleží na bielych znakoch. Ak sa na riadku vyskytne znak '#' tak bude zvyšok riadku ignorovaný.
Za normálnych okolností je v sekcii definovaná premenná sablona, ktorá obsahuje šablonu. V tejto šablone sa aplikujú náhrady premenných. Ak má nejaká premenna viac hodnôt, tak výsledkom bude spojenie aplikácii šablony cez všetky hodoty.
Takto vygenerovaný výstup sa uloží do súboru, ktorý je definovaný premennou subor do adresára definovaného premennou adresar. Ak premenná subor nieje definovaná tak sa názov súboru vytvorí automaticky skombinovaním názvu sekcie a premennej pripona. Ak premenná pripona nieje definovaná, tak sa ako prípona použije ".html".
V sekcii nemusí byť definovaná šablona. Namiesto šablony môže byť nastavená premenná link, ktorá udáva cestu k súboru, alebo adresáru, ktorý bude symbolicky prilinkonavý pod názvom podľa premennej subor.
Namiesto premennej link môže byť nastavená premenná url, ktorá udáva url, ktoré bude použité v menu namiesto tejto sekcie.
Ak nieje definovaná ani šablona ani link ani url, môže byť definovaná premenná copy, ktorá udáva cestu k súboru, ktorý bude prekopírovaný pod názvom podľa premennej subor.
Ak je názov sekcie hidden, tak sa táto sekcia neobjaví v menu.
V šablone sa všetky výskyty "%premenna%" nahradia za obsah premennej premenna. Pre každú hodnotu premennej sa zreťazí-zopakuje celá šablóna. Výskyt "%*premenna%" sa nahradí za zreťazenie všetkých hodnôt premennej premenna. Okrem nastavených premenných môžu byť použité implicitné premenné:
Menu sa generuje iba keď je použitá premenná menu. V menu budú zahrnuté všetky podsekcie aktuálnej sekcie. Aktuálna sekcia v menu zahrnutá nebude. Výnimkou je ak je menu generované v hidden sekcii. V takom prípade bude menu generované ako keby bolo v nadradenej sekcii a bude doň zahrnutá teda aj nadradaná sekcia.
Názov pod kotrým bude sekcia vystupovať v menu je daný premennou nazov. Ak táto premenná nieje nastavená potom bude sekcia v menu vystupovať pod svojim názvom.
Ak sekcia generuje viac súborov, tak v menu bude iba prvý.
Ak je definovaná premenná textova_verzia potom bude spolu s normálnou verziou generovaná aj textová verzia. Súbory nebudú zapisované do adresára podľa premennej adresar, ale podľa premennej textova_verzia.
Pri generovaní textovej verzie sa nespracuváva šablóna. Namiesto nej je súbor, ktorého názov je v premennej zdroj bez zmien prekopírovaný na cieľové miesto pod svojim názvom.
Ak bol pri spustení programu zadaný prepínač -t <prog> , tak sa namiesto kopírovania spustí externý program ktorý dostane dva argumenty: zdrojový súbor a cieľový súbor.
Marek Zelem (c)1999
e-mail: marek@fornax.elf.stuba.sk
Špeciálne ďakujem Branislavovi Steinmüllerovi za podnetné nápady, ktoré síce niekedy nie celkom v súlade s mojou predstavou smerovali k špecializácii na generovanie web-u ale zato vyrazne zjednodušili písanie konfiguračného súboru.
Prajem príjemné používanie.
Marek Zelem