
Projekt języka : Grupy : Definicja | Poprzednia strona: Wprowadzenie Nastepna strona: $ |
Składania definicji grupy jest następująca:
group iden1 "stała" [extends iden2]
gdzie iden1 jest nazwą (identyfikatorem) grupy, stała jest długą nazwą grupy, zaś iden2 jest nazwą grupy bazowej.
Przykład hierarchii grup:
group g_wierzchołek "Całość" group g_wprowadzenie "Wprowadzenie" extends g_wierzchołek group g_rozwinięcie "Rozwinięcie" extends g_wierzchołek group g_zakończenie "Zakończenie" extends g_wierzchołek group g_roździał_1 "Rozdział 1" extends g_rozwinięcie group g_roździał_2 "Rozdział 2" extends g_rozwinięcie group g_roździał_3 "Rozdział 3" extends g_rozwinięcie /* Struktura powyższych grup: g_wierzchołek g_wprowadzenie g_rozwinięcie g_rozdział_1 g_rozdział_2 g_rozdział_3 g_zakończenie */
Istnieje kilka instrukcji stworzonych z myślą o obsłudze group. Dokładniejszy ich opis znajduje się w dalszej części pracy (por. p. 5.10.15 - 5.10.21).
| Instrukcja | Opis |
| grname | Zwraca długą nazwę grupy. |
| grparent | Zwraca identyfikator nadgrupy lub pusty tekst jeśli nie jest pochodną żadnej innej grupy. |
| grmembers | Zwraca listę identyfikatorów obiektów i grup należących do grupy podanej jako argument. Nazwy oddzielone są znakami spacji. |
| lastwordin | Zwraca ostatni identyfikator z listy. |
| firstwordin | Zwraca pierwszy identyfikator z listy. |
| beforeword | Zwraca poprzedni identyfikator z listy. |
| afterword | Zwraca następny identyfikator z listy. |
Przykłady:
group g_main calss c_foo groups g_main method main() decl i, j, prev, next set i [ grmembers(g_main,cofiles) ] set prev [ beforeword($i,$this)] set next [ afterword($i,$this)] $this.longname; nl '<- ' if $prev != "" then set j $prev,".longname" '<a href ="' call($prev,href)() '"></a>' $$j '</a>' else 'brak' endif ' | ' if $next != "" then set j $next,".longname" '<a href ="' call($next,href)() '"></a>' $$j '</a>' else 'brak' endif ' ->' nl endm endc file f1 "Jeden" do c_foo.main() file f2 "Dwa" do c_foo.main() file f3 "Trzy" do c_foo.main() /* Po skompilowaniu powyższego przykładu powinny powstać trzy pliki: f1.html o następującej zawartości: "Jeden <- brak | <a href="f2.html">Dwa</a> ->" f2.html o następującej zawartości: "Dwa <- <a href="f1.html">Jeden</a> | <a href="f3.html">Trzy</a> ->" f3.html o następującej zawartości: "Trzy <- <a href="f2.html">Dwa</a> | brak ->" */
Powyższy przykład doskonale ilustruje elastyczność ObjectHTML w tworzeniu struktur nawigacyjnych. Dodanie nowego pliku który dziedziczy z klasy c_foo i wchodzi do struktury nawigacyjnej nie wymaga żadnych zmian w definicji klasy.