BEGIN {
home = "http://www.complang.tuwien.ac.at/";
site = home;
sitemap["de"] = "sitemap";
sitemap["en"] = "sitemap-e";
sitemaptitle["de"] = "Überblick über die Seiten";
sitemaptitle["en"] = "Overview of these Pages";
css = "complang.css";
favicon = "favicon.ico";
output = 0;
found = 0;
activeme = 0;
addtitle = "";
statement = "";
outer = prefix;
atlevel[0] = "";
atlevel[1] = " ";
atlevel[2] = " ";
atlevel[3] = " ";
atlevel[4] = " ";
atlevel[5] = " ";
atlevel[6] = " ";
rselins = "";
otherlang["de"] = "en";
otherlang["en"] = "de";
alang["de"] = "English";
alang["en"] = "German";
fisite["de"] = "http://www.informatik.tuwien.ac.at/";
fisite["en"] = "http://www.informatik.tuwien.ac.at/english/";
fititle["de"] = "Fakultät für Informatik";
fititle["en"] = "Faculty of Informatics";
tutitle["de"] = "Technische Universität Wien";
tutitle["en"] = "Vienna University of Technology";
hometitle["de"] = "Die Complang-Gruppe";
hometitle["en"] = "The Complang Group";
thispage["de"] = "Kurzbezeichnung der aktuellen Seite";
thispage["en"] = "Short Name of Current Page";
partofpage["de"] = "Verweis innerhalb dieser Seite";
partofpage["en"] = "Reference Within this Page";
currentsub = "";
newsfound = 0;
if (encoding == "") {
encoding = "ISO-8859-1";
}
rsslink = "";
}
function noindex(ind) {
if (ind == "index") {
return home;
}
else if (index(ind, site) != 0) {
return ind;
}
else {
result = gensub("/index$","/",1,ind);
if (result == ind)
return prefix ind;
else
return result;
}
}
($1 == "%encoding"){
if(NF != 2 ){
# at least a text or a date/place musst be provided with a title
print FILENAME " (line " FNR "): WARNING: encoding entry with missing parameters" >"/dev/stderr";
next;
}
else{
encoding = $2;
}
}
($1 == "%rsslink") && (output == 0){
if(NF != 2 ){
# at least a text or a date/place musst be provided with a title
print FILENAME " (line " FNR "): WARNING: rsslink entry with missing parameters" >"/dev/stderr";
next;
}
else{
rsslink = $2;
}
}
# set flag to process news items
($1 == "%news") {
newsfound = 1;
next;
}
# news item is now processed...
($1 == "%endnews" ) && (newsfound == 1) {
newsfound = 0;
# build the news entry
if (news_title == "" && (news_text == "" || !(news_date == "" || news_time == "" || news_place == ""))){
# at least a text or a date/place musst be provided with a title
print FILENAME " (line " FNR "): WARNING: news entry with missing parameters" >"/dev/stderr";
next;
}
if (news_pretitle != "") {
news_pretitle = news_pretitle ": "
}
if (news_url == ""){
print "
" news_pretitle "" news_title "
";
}
else{
print "";
news_url = "";
}
if (news_text != ""){
print "";
print news_text;
print "
";
news_text = "";
}
if ((news_date != "" && news_time != "" && news_place != "")){
print "";
print "- Datum:
- " news_date "
";
print "- Zeit:
- " news_time "
";
print "- Ort:
- " news_place "
";
print "
"
news_date = "";
news_time = "";
news_place = "";
}
print "
"
next;
}
(newsfound == 1) {
# we are inside a news item, process the different options
if ($1 == "%title"){
news_title = substr($0, 7);
}
else if ($1 == "%pretitle"){
if (NF < 2) {
print FILENAME " (line " FNR "): WARNING: %pretitle missing an argument" >"/dev/stderr";
}
news_pretitle = substr($0, 10);
}
else if($1 == "%url"){
if (NF < 2) {
print FILENAME " (line " FNR "): WARNING: %url missing an argument" >"/dev/stderr";
}
news_url = substr($0, 5);
}
else if($1 == "%time"){
if (NF < 2) {
print FILENAME " (line " FNR "): WARNING: %time missing an argument" >"/dev/stderr";
}
news_time = substr($0, 6);
}
else if($1 == "%date"){
if (NF < 2) {
print FILENAME " (line " FNR "): WARNING: %date missing an argument" >"/dev/stderr";
}
news_date = substr($0, 6);
}
else if ($1 == "%place"){
if (NF < 2) {
print FILENAME " (line " FNR "): WARNING: %place missing an argument" >"/dev/stderr";
}
news_place = substr($0, 7);
}
else if ($1 == "%pubdate"){
# ignore here
}
else {
# append plain text
news_text = news_text " " $0
}
next;
}
(output == 1) && (newsfound == 0){
print $0;
next;
}
($1 == "%altlng") && (output == 0) {
if (NF < 3)
print FILENAME " (line " FNR "): WARNING: %altlang has less than 2 arguments" >"/dev/stderr";
if (altlang[$2] != "" && altlang[$2] != $3)
print FILENAME " (line " FNR "): WARNING: " $2 " already has " altlang[$2] " as page name of alternative language; overridden by " $3 >"/dev/stderr";
if (altlang[$3] != "" && altlang[$3] != $2)
print FILENAME " (line " FNR "): WARNING: " $3 " already has " altlang[$3] " as page name of alternative language; overridden by " $2 >"/dev/stderr";
altlang[$2] = $3;
altlang[$3] = $2;
currentsub = "";
next;
}
($1 == "%map") && (output == 0) {
if (NF < 6)
print FILENAME " (line " FNR "): WARNING: %map has less than 5 arguments" >"/dev/stderr";
nm = $2;
lng = $3;
pr = $4;
st = $5;
brackets = 0;
lt = "";
h1 = "";
for (i = 6; i <= NF; i++) {
if ($i == "[")
brackets++;
else if ($i == "]")
if (brackets > 0)
brackets--;
else
print FILENAME " (line " FNR "): WARNING: unbalanced ']' in title field of %map" >"/dev/stderr";
else {
if (lt == "")
lt = $i;
else
lt = lt " " $i;
if (brackets == 0)
if (h1 == "")
h1 = $i;
else
h1 = h1 " " $i;
}
}
if (brackets > 0)
print FILENAME " (line " FNR "): WARNING: unbalanced '[' in title field of %map" >"/dev/stderr";
skip = 0;
titlelist[prefix nm] = lt;
if (pr == "-") {
outer = site;
toplevel = 0;
}
else if (pr == 0) {
level[nm] = 0;
toplevel = 0;
start[lng] = nm;
if (altlang[nm] == "")
start[otherlang[lng]] == nm;
}
else {
newlevel = level[pr] + 1;
level[nm] = newlevel;
if (newlevel > toplevel) {
if (found == 0 || pr == me || altlang[pr] == me) {
lmenu[newlevel, "de"] = lmenu[toplevel, "de"];
lmenu[newlevel, "en"] = lmenu[toplevel, "en"];
toplevel = newlevel;
}
else
skip = 1;
}
else if (newlevel < toplevel) {
if (found == 1) {
lmenu[newlevel, "de"] = lmenu[toplevel, "de"];
lmenu[newlevel, "en"] = lmenu[toplevel, "en"];
}
toplevel = newlevel;
}
}
if (nm == me) {
if (activeme == 0)
entry = " " atlevel[toplevel] "" st "\n";
else
entry = " " atlevel[toplevel] "" st "\n";
found = 1;
lang = lng;
stitle = st;
ltitle = lt;
header1 = h1;
pred = pr;
if (altlang[me] != "")
rmenu = " " alang[lang] "\n";
rmenu = rmenu " Sitemap\n";
}
else
entry = " " atlevel[toplevel] "" st "\n";
if (skip == 0) {
lmenu[toplevel, lng] = lmenu[toplevel, lng] entry;
if (altlang[nm] == "")
lmenu[toplevel, otherlang[lng]] = lmenu[toplevel, otherlang[lng]] entry;
}
currentsub = "";
next;
}
($1 == "%submenu") && (output == 0) {
if (NF < 2)
print FILENAME " (line " FNR "): WARNING: %submenu has no argument" >"/dev/stderr";
currentsub = $2;
if (NF > 2) {
lt = $3;
for (i = 4; i <= NF; i++)
lt = lt " " $i;
submenu[currentsub] = submenu[currentsub] "