Przegląd i dokumentacja
W A-Parser do formatowania zapytań i wyników stosowany jest silnik szablonów Template Toolkit. Silnik ten pozwala na tworzenie końcowego ciągu znaków (na przykład zapytań lub wyników) według reguł określonych w szablonie. Template Toolkit posiada wiele możliwości:
- Obsługa warunków i pętli
- Obsługa zwykłych zmiennych (skalarów), tablic i hashy (tablic asocjacyjnych)
- Obsługa metod dla zmiennych (długość ciągu, wyszukiwanie i zamiana, rozmiar tablicy...)
- Obsługa wtyczek i filtrów (wyświetlanie i formatowanie daty i czasu, generowanie elementów HTML...)
Przykład użycia silnika szablonów
Oficjalna dokumentacja Template Toolkit
Dużą zaletą tego silnika szablonów jest dostępność pełnej dokumentacji w językach rosyjskim i angielskim, poniżej znajdują się linki do najważniejszych sekcji dokumentacji:
- Wprowadzenie - informacje ogólne
- Składnia - zasady i styl pisania szablonów
- Dyrektywy - warunki, pętle, filtry, wtyczki i makra
- Zmienne - dostęp i aktualizacja wartości zmiennych, tablic i hashy
- Metody wirtualne - predefiniowane funkcje do przetwarzania zmiennych, tablic i hashy
- Wtyczki i Filtry - rozszerzone możliwości silnika szablonów, A-Parser obsługuje następujące wtyczki:
- Date - do generowania sformatowanych ciągów z datami
- Dumper - wyświetlanie zrzutu struktury danych
- Format - do tworzenia funkcji formatujących opartych na składni printf
- HTML - do tworzenia elementów HTML i escapowania kodu HTML
- Filter - do tworzenia i używania filtrów definiowanych i dostępnych poprzez ładowanie wtyczki
- Math - do korzystania z dowolnych funkcji matematycznych
- String - implementuje dodatkowe metody do pracy z ciągami znaków
- Table - do prezentacji danych w formie tabeli
- URL - do budowania linków
- Wrap - do formatowania akapitów
- Iterator - do iteracji po zestawie danych. Iterator jest niejawnie tworzony automatycznie przez dyrektywę FOREACH. Ta wtyczka pozwala na jawne utworzenie iteratora o określonej nazwie
Przykłady użycia
Przykłady często używanych szablonów
Przykład użycia wtyczki Math
Losowo wybierz określoną liczbę linków:
[% limit = 5;
USE Math;
FOREACH i IN [1..5];
n = Math.rand(intlinks.size);
intlinks.$n.link _ "\n";
END %]
Przykład pętli FOREACH
Wyświetl wszystkie linki i ich pozycje z tablicy $serp:
[% FOREACH item IN p1.serp;
loop.count _ ' - ' _ item.link _ "\n";
END %]
Przykład pętli WHILE
Wyświetl 5 anchorów z tablicy $serp, zaczynając od trzeciego:
[% n = 2;
WHILE n < 7;
p1.serp.${n}.anchor _ "\n";
n = n + 1;
END %]
Przykład warunku
Wyświetlanie określonych danych w zależności od wartości zmiennej:
[% IF p1.totalcount < 1000;
query _ " - mało\n";
ELSIF p1.totalcount < 1000;
query _ " - normalnie\n";
ELSE;
query _ " - dużo\n";
END %]