fb:porticula NoPaste
GOG (GottesdienstOrdnungsGenerator
Uploader: | nemored |
Datum/Zeit: | 27.02.2008 00:47:00 |
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.
Warnung: Es steht bereits eine neuere Version des Quelltexts zur Verfügung. Die hier vorliegende alte Version könnte Fehler enthalten, die in der neuen Version vielleicht ausgebessert wurden.
declare sub ersetze overload (byref zeile as string)
declare sub ersetze(byref zeile as string, original as string, ersetzung as string)
declare function suchePfarrei(byval eingabe as string) as string
dim as string zeile, z, tag, datum, uhr, info, naechstePfarrei
dim as ubyte s, f1, f2, f3, wobinich, wochenende
'wobinich gibt den Schreibstand an.
'1: Anfangsdaten werden uebernommen (vor dem Kommentar <!-- aktuelle Woche -->)
'2: Daten der "aktuellen Woche" werden uebersprungen
'3: Daten der "folgenden Woche" werden unter "aktuelle Woche" geschrieben
'4: neue Daten (aus gog.txt) werden unter "folgende Woche" bzw. "Resttage" geschrieben
'5: Schlussdaten werden uebernommen (nach dem schliessenden </table>)
f1 = freefile
open "gog.txt" for input as #f1
if eof(f1) then close #f1 : end
'Oeffne die erste HTML-Seite: Astadt
f2 = freefile
name "astadt_gottesdienst.htm", "bak-astadt-" & date & ".htm"
open "bak-astadt-" & date & ".htm" for input as #f2
f3 = freefile
open "astadt_gottesdienst.htm" for output as #f3
wobinich = 1
print "schreibe jetzt astadt ";
do
if wobinich <> 4 then
if eof(f2) then
' vvv Pfarrei fertig, naechste Pfarrei oeffnen vvv
if eof(f1) then exit do
print " fertig!"
print "schreibe jetzt " & naechstePfarrei & " ";
close #f2, #f3
name naechstePfarrei & "_gottesdienst.htm", "bak-" & naechstePfarrei & "-" & date & ".htm"
open "bak-" & naechstePfarrei & "-" & date & ".htm" for input as #f2
open naechstePfarrei & "_gottesdienst.htm" for output as #f3
wobinich = 1
end if
line input #f2, zeile
if wobinich <> 2 then
'vvv Uebertrag beenden, es folgen die neuen Termine: vvv
if trim(zeile) = "<!-- Resttage -->" then
print ".";
wobinich = 4
wochenende = 1
print #f3, "<!-- folgende Woche -->"
do
line input #f2, zeile
loop until trim(zeile) = "</table>"
else
print #f3, zeile
end if
end if
'vvv Kopfzeilen beenden, es folgt der zu ueberspringende Teil: vvv
if trim(zeile) = "<!-- aktuelle Woche -->" then wobinich = 2 : print ".";
'vvv Alte Woche beenden, der folgende Teil wird zur alten Woche: vvv
if trim(zeile) = "<!-- folgende Woche -->" then wobinich = 3 : print ".";
else
if eof(f1) then
wobinich = 5 : continue do
end if
line input #f1, zeile
do
ersetze zeile
z = left(zeile, 3)
if z="Mo." or z="Di." or z="Mi." or z="Do." or z="Fr." or z="Sa." or z="So." then
' ein neues Datum gefunden
if (z = "Sa." or z = "So.") and wochenende = 0 then
print #f3, "": print #f3, "": print #f3, "<!-- Resttage -->"
' die Resttage sind wichtig, da die Kirchenwoche mit Samstagabend beginnt,
' der Gottesdiestanzeiger aber immer bis zum Sonntag der naechsten Woche reicht
end if
if z = "Sa." then wochenende = 1 else wochenende = 0 ' fuer den Resttage-Kommentar
' vvv neues Datum in die Datei schreiben vvv
print #f3, "<tr>"
tag = z
datum = mid(zeile, 5, 6)
print #f3, " <td class='gdtop'>" & tag & " " & datum & "</td>"
zeile = mid(zeile, 12)
ersetze zeile
if instr(zeile, "Uhr") then
' wenn erste Uhrzeit in derselben Zeile steht, dann merken und weiter unten schreiben
print #f3, " <td class='gdtop'> </td>"
print #f3, "</tr>";
else
' sonst: Beschreibung zum Datum (3. Fastengottesdienst o. ae.)
print #f3, " <td class='gdtop'>" & zeile & "</td>"
print #f3, "</tr>";
if eof(f1) then wobinich = 5: exit do
line input #f1, zeile
continue do
end if
end if
s = instr(zeile, "Uhr")
if s > 0 then
print #f3, "<tr>"
uhr = left(zeile, s-1)
if left(uhr, 3) = "ab " then
' Format: ab 9.00 Uhr
uhr = mid(uhr, 4)
if uhr[1] = asc(".") then uhr = "0" & uhr
uhr[2] = asc(":")
uhr = "ab " & uhr
else
if uhr[1] = asc(".") then uhr = "0" & uhr
if len(uhr) < 7 then
' Format: 9.00 Uhr
uhr = left(uhr, 5) & " Uhr"
else
' Format: 9.00 - 10.30 Uhr
ersetze(uhr, " ", "")
ersetze(uhr, "-", "–")
uhr = left(uhr, 5) & "-" & mid(uhr, 13)
if len(uhr) = 11 then uhr[8] = asc(":")
end if
uhr[2] = asc(":")
end if
info = mid(zeile, s+3)
ersetze info
while -1 ' fauler Trick, um ein Springen aus zwei Schleifen zu ermoeglichen
if eof(f1) then
print #f3, " <td class='gddat'>" & uhr & "</td>"
print #f3, " <td class='gdinf'>" & info & "</td>"
print #f3, "</tr>";
wobinich = 5
exit do
end if
line input #f1, zeile
ersetze zeile
z = left(zeile, 3)
if z="Mo." or z="Di." or z="Mi." or z="Do." or z="Fr." or z="Sa." or z="So." _
or instr(zeile, "Uhr") > 0 or left(zeile, 28) = "Gottesdienste in der Pfarrei" then exit while
info &= " " &zeile
wend
print #f3, " <td class='gddat'>" & uhr & "</td>"
print #f3, " <td class='gdinf'>" & info & "</td>"
print #f3, "</tr>";
continue do
end if
if left(zeile, 17) = "Gottesdienste in " then
naechstePfarrei = suchePfarrei(mid(zeile, 29))
wobinich = 5
exit do
end if
if zeile <> "" then
print #f3, "<tr>"
print #f3, " <td> </td>"
print #f3, " <td>" & zeile & "</td>"
print #f3, "</tr>";
end if
if eof(f1) then wobinich = 5: exit do
line input #f1, zeile
ersetze zeile
loop
print #f3, "" : print #f3, "</table>"
end if
loop
close
print " fertig!"
print "Alle Dateien wurden geschrieben."
sub ersetze(byref zeile as string)
ersetze(zeile, chr(9), " ")
zeile = trim(zeile)
ersetze(zeile, "†", "†")
ersetze(zeile, "–", "–")
ersetze(zeile, "„", "„")
ersetze(zeile, "“", "“")
ersetze(zeile, "ä", "ä")
ersetze(zeile, "Ä", "Ä")
ersetze(zeile, "ö", "ö")
ersetze(zeile, "Ö", "Ö")
ersetze(zeile, "ü", "ü")
ersetze(zeile, "Ãœ", "Ü")
ersetze(zeile, "ß", "ß")
end sub
sub ersetze(byref zeile as string, original as string, ersetzung as string)
dim as ubyte z
do
z = instr(zeile, original)
if z = 0 then exit do
zeile = left(zeile, z-1) & ersetzung & mid(zeile, z+len(original))
loop
end sub
function suchePfarrei(byval eingabe as string) as string
eingabe = lcase(eingabe)
if instr(eingabe, "behausen") then return "behausen"
if instr(eingabe, "cedorf") then return "cedorf"
print "EINLESEFEHLER" : end
end function