###############################################################################
# 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" />