Inspiracj± do jego powstania by³ w du¿ym stopniu jêzyk szablonów Clariona, z piêknym mechanizmem "embed/emit", umo¿liwiaj±cym odtworzenie tego, co robi cz³owiek (¿ywy generator kodu) podczas pracy nad programem. Autor - programista - nie tworzy tekstu liniowo, ale porusza siê po ró¿nych plikach wstawiaj±c tu i tam kawa³ki kodu.
Ilustruje to poni¿szy przyk³ad, pokazuj±cy, co robi programista dodaj±c now± opcjê wywo³ania programu:
Przy u¿yciu szablonu podobnego do zaprezentowanego ni¿ej, mo¿na to wszystko zrobiæ wywo³uj±c jedn± funkjê.
Dodawanie opcji | |
---|---|
@function opt( type, var, letter, help ) @emit "variables" $type $var; @emit "switch" case $letter: @if ( $type == "int" ) $var = atoi(argv[ i ]); @else $var = argv[ i ]; @endif break; @emit "help" "$help" @endfunction | 1. Zdefiniuj zmienn± globaln± 2. Dodaj odga³êzienie w instrukcji switch ... zale¿nie od typu zmiennej 3. Dodaj opis w tek¶cie pomocy |
Linie rozpoczynaj±ce siê znakiem @ steruj± przebiegiem generacji. Pozosta³e linie zawieraj± szablony generowanych napisów.
Kod szablonu jest przejrzysty, a mechanizm @embed/@emit jest prostszy w u¿yciu od divert/undivert znanego z M4.
Sk³adnia jêzyka szablonów wzorowana jest na C i na PHP. W odró¿nieniu od PHP, Temgen jest generatorem uniwersalnym, u jego podstaw nie le¿± ¿adne za³o¿enia dotycz±ce charakteru generowanego tekstu. Prostszy jest tak¿e "escaping", oparty jest na podziale szablonu na dwa rodzaje linii: linie steruj±ce i line danych. Taki kod ³atwo siê czyta.
Nie jest preprocesorem, jest raczej interpreterem jêzyka. Jest wyposa¿ony w z³o¿one struktury danych (rekordy, hashe) i w klasyczny mechanizm definiowania funkcji.
Temgen rozpowszechniany jest w oparciu o licencjê GNU, wraz z pe³nym kodem ¼ród³owym. Autor bêdzie wdziêczny za wszelkie uwagi i sugestie, a tak¿e za krytykê, o ile bêdzie kulturalna ;)
Marek £êtowski (mletowski@firma.interia.pl)