###############################################################################
# Unix Shellskript html-stapeln
# Liste benutzter Variablen
# zu bearbeitendes Skript; der Verzeichnisname "skript"
# gerade bearbeitetes Kapitel; ein Verzeichnis "dir"
#
# Dateien
# Alle Dateien des Skriptes "~/tmp/dateilistea"
# Dateien des Skriptes in aktuellem Kapitel "~/tmp/dateilisteb"
# Einzelne html-Datei nach Modifikation der Bildlinks "~/tmp/datei_1"
# ~/tmp/datei_1 in Header verkleinert und mit zusätzlichem
# Zeilenumbruch am Dateiende, bereit zum Stapeln "~/tmp/datei_2"
#
# Streameditor-Anweisungsskripte
# "~/bin/html-stapeln-filter.sed" filtert htm-Verweise aus Inhaltsverzeichnis
# "~/bin/html-stapeln-modif1.sed" entfernt Fenstertitel und Seitenhintergrund
# "~/bin/html-stapeln-modif2.sed" fuegt Seitenumbruch ein, entfernt Verlinkungen
echo
echo "Dieses Programm stapelt eine Liste von htm-Dateien eines Skriptes"
echo "in einer einzigen htm-Datei mit dem Namen skript.htm."
echo "Die Liste wird aus dem Inhaltsverzeichnis des Skriptes generiert."
echo "Es werden nur die Dateien der angegebenen Kapitel gestapelt."
echo
echo -n "Welches Skript ist zu bearbeiten? "
read skript
echo
sed "s/src=\"/src=\"\\$skript\//g" ~/www/$skript/index.html | \
sed -f ~/bin/html-stapeln-modif1.sed > ~/www/skript.htm
if [ -d ~/www/$skript ]; then
sed -f ~/bin/html-stapeln-filter.sed ~/www/$skript/index.html > ~/tmp/dateilistea
# cat ~/tmp/dateilistea
echo "Welche Kapitel sollen in die Gesamtdatei?"
echo -n "Geben Sie den Unterverzeichnisnamen fuer das Kapitel ein... "
read dir
echo "Kapitel ~/www/$skript/$dir wird bearbeitet"
echo
cat ~/tmp/dateilistea | sed -n "/$dir\//p" > ~/tmp/dateilisteb
# cat ~/tmp/dateilisteb
# Modifizieren der einzelnen htm-Dateien
datei_0=$(head -1 ~/tmp/dateilisteb)
while [ $datei_0 ]; do
echo "Es wird die Datei ~/www/$skript/$datei_0 modifiziert"
# Anpassung der Bildlinks
sed "s/src=\"/src=\"\\$skript\\/\\$dir\//g" ~/www/$skript/$datei_0 > ~/tmp/datei_1
# Entfernung des Headers, Einfügung von Seitenumbruechen
sed -f ~/bin/html-stapeln-modif2.sed ~/tmp/datei_1 > ~/tmp/datei_2
# hier wird aneinandergekettet
cat ~/tmp/datei_2 >> ~/www/skript.htm
sed 1d ~/tmp/dateilisteb > ~/tmp/dateilistec
mv ~/tmp/dateilistec ~/tmp/dateilisteb
datei_0=$(head -1 ~/tmp/dateilisteb)
done
# Verzeichnisspezifische Sedanweisungsdateien
echo
echo -n "Naechstes Kapitel oder Kapiteleingabe mit Returntaste abschliessen ... "
read dir
while [ $dir ]; do
echo "Kapitel ~/www/$skript/$dir wird bearbeitet"
echo
cat ~/tmp/dateilistea | sed -n "/$dir\//p" > ~/tmp/dateilisteb
# Modifizieren der einzelnen htm-Dateien
datei_0=$(head -1 ~/tmp/dateilisteb)
while [ $datei_0 ]; do
echo "Es wird die Datei ~/www/$skript/$datei_0 modifiziert"
# Anpassung der Bildlinks
sed "s/src=\"/src=\"\\$skript\\/\\$dir\//g" ~/www/$skript/$datei_0 > ~/tmp/datei_1
# Entfernung des Headers, Einfügung von Seitenumbruechen
sed -f ~/bin/html-stapeln-modif2.sed ~/tmp/datei_1 > ~/tmp/datei_2
# hier wird aneinandergekettet
cat ~/tmp/datei_2 >> ~/www/skript.htm
sed 1d ~/tmp/dateilisteb > ~/tmp/dateilistec
mv ~/tmp/dateilistec ~/tmp/dateilisteb
datei_0=$(head -1 ~/tmp/dateilisteb)
done
echo
echo -n "Naechstes Kapitel oder Kapiteleingabe mit Returntaste abschliessen ... "
read dir
echo
done
rm ~/tmp/dateilistea
rm ~/tmp/dateilisteb
rm ~/tmp/datei_1
rm ~/tmp/datei_2
echo
echo "Die zur Ansicht und zum Ausdruck bestimmte Gesamtdatei skript.htm"
echo "liegt nun fertig vor."
echo
fi
###############################################################################
#
# Diese Zusammenstellung von Streameditoranweisungen erstellt aus dem
# Inhaltsverzeichnis einer Vorlesung eine Liste der Dateien, auf die verwiesen
# wird
#
# behaelt nur Zeilen mit dem String <a href="./Kap_
/<a href=".\/Kap\_/ !d
# löscht Zeilen mit Sprungmarke # als Ziel
/#/ d
# ersetzt alle Zeichen bis zum Beginn des Linkziels
# www.pci.tu-bs.de/aggericke/ als Ausgangsverzeichnis
s+^.*\(<a href=".\/\)\(.*\)\(">\).*$+\2+g
#
#
###############################################################################
#
# Diese Zusammenstellung von Streameditoranweisungen entfernt den Kopf der html-Datei und Verlinkungen
#
# löscht Zeilen mit String 'meta' als Ziel
#/\<META/ d
#/\<meta/ d
/\<title/ d
/\<TITLE/ d
#/\<body\>/ d
#/\<BODY\>/ d
# entfernt für Body
s/<body.*>/<body>/g
# löscht Verlinkungen
s+<a href=.*>\(.*\)</a>+<b>\1</b>+g
s+<A HREF=.*>\(.*\)</A>+<B>\1</B>+g
#
###############################################################################
#
# Diese Zusammenstellung von Streameditoranweisungen ...
#
# fügt vor die Zeile </body> einen Zeilenumbruch ein
/<\/body>/ i\
<div style="page-break-before:always" />
#
# fügt vor die Zeile </BODY> einen Zeilenumbruch ein
#/<\/BODY>/ i\
#<div style="page-break-before:always" />