Definicja

Obiektowy język definiowania dokumentów hipertekstowych i jego implementacja.

ObjectHTML

Wstęp - geneza, zastosowania
Opis podstawowych pojęć
    Internet
    IP
    TCP
    HTTP
    WWW
    HTML
    URL
    Pozostałe usługi
Definicje
Inne rozwiazania
    Wprowadzenie
    ASP
    JSP
    PHP
    Homesite
    Microsoft FrontPage
Projekt języka
    Struktura leksykalna
    Komentarze
    Typy atrybutów i zmiennych
    Podstawowe składowe programu
    Deklaracje
    Klasy
    Metody
    Atrybuty
    Grupy
        Wprowadzenie
        Definicja ->
    Instrukcje
        $
        [ ]
        call
        set
        append
        incr
        if
        while
        for
        currenttime
        encode
        import
        export
        grmembers
        grname
        grparent
        lastwordin
        firstwordin
        beforeword
        afterword
        query
    Wyrażenia i operatory
    file
    image
    include
    Gramatyka
Wywołanie kompilatora
Program narzędziowy makedefs
    Geneza i ogólny opis
    Uruchamianie
    Przykłady użycia
Opis implementacji
    Drzewo programu / kompilator
    Opis najważniejszych klas
Przykładowa aplikacja
Podsumowanie
Literatura

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.

Listopad 2000