de | en

webgen

Webgen dient der automatischen Generierung von Html-Seiten, unter besonderer Beachtung der dort auftretenden Menüstruktur. Letztere ist hierbei in einer eigenen Datei enthalten, welche desweiteren den Inhalt, Kopf- und Fußzeilen sowie das Erscheinungsbild (definiert durch CSS) beschreibt. Ein Beispiel für das fertige Produkt bieten die Html-Seiten von HLNUM.ORG, d.h. dieser Internet- Präsenz.

Webgen wurde in C++ geschrieben und steht unter der GPL. Für eine, von der Standard-Html-Interpretation abweichende Darstellung werden desweiteren CSS-Definitionen benötigt. Einige Beispiele hierfür liegen webgen bei.

Änderungen

webgen-0.5.2

  • Impressum-Tag für jeden Menüeintrag hinzugefügt
  • hidden-Schalter eingeführt um Einträge im Menü zu "verstecken"
  • Datum in Html-Datei ist nun Datum der letzten Modifikation der Inhalts-Datei
  • CSS-Stil mit NeXT-artigem Menü hinzugefügt

webgen-0.5.1

  • Benutzung von getopt_long für die Parameter-Auswertung
  • Ausgabe von deutschen Fehlermeldungen (falls erwünscht)
  • überflüssigen Code aus parser.cc entfernt
  • neuer Stil (green) hinzugefügt
  • Option -s,--silent hinzugefügt; Standard ist verbosity=1

webgen-0.5

  • neues Layout mit rein auf CSS basierender Positionierung
  • nur geänderte Dateien werden generiert (falls nicht erzwungen)
  • Unterstützung für deutsche Sprache
  • verschiedene Ausgabe-Stufen

webgen-0.4.2

  • Fehler bei der Behandlung von direkten Verweisen korrigiert
  • neue Menge von CSS-Dateien

webgen-0.4.1

  • CSS-Dateien wurden in die Distribution aufgenommen
  • Entfernung von IDs aus dem Menüsystem; Html-dateien werden nun über ihre relative Position identifiziert

webgen-0.4.0.1

  • kleinere Änderungen an den Namen und dem Layout der CSS-dateien

webgen-0.4

  • erste öffentliche Version

Menübeschreibung

Die Syntax für die Menüdatei lautet wie folgt:

Syntax: 
   menu { fields | menu | tab }
   tab:      name      = string;        - name des tabs
             content   = string;        - inhalt des tabs
             htmlfile  = string;        - zu generierende html-datei (oder verweis)
             css       = string;        - css-stil des tabs
             addcss    = string;        - zusätzliche css-stile
             impressum = string;        - verweis/datei für impressum
   fields:   name      = string;        - name des menü-eintrages
             content   = string;        - inhalt der html-datei
             htmlfile  = string;        - zu generierende html-datei (oder verweis)
             title     = string;        - titel der html-seite
             headline  = string;        - kopfzeile der html-seite
             header    = string;        - definition der kopfzeile über eigene datei
             footer    = string;        - definition der fusszeile über eigene datei
             css       = string;        - css-stil der html-datei
             addcss    = string;        - zusätzliche css-stile
             impressum = string;        - verweis/datei für impressum
             hidden;                    - generiere html-datei ohne menüeintrag
   string:   [a-zA-Z]+[0-9a-zA-Z_/]*
   num:      [0-9]+

Im folgenden ist ein Beispiel für eine derart definierte Menü-Struktur zu finden:

menu {
  name     = "root";
  id       = "root";
  title    = "Ronald Kriemann";
  headline = " ";
  css      = "css/darkblue.css";

  #
  # Home page
  #
  menu { name = "Home"; content = "index.con"; }

  #
  # Projects
  #
  menu { name = "Projects"; content = "projects.con";

    #
    # H-matrix project
    #    
    menu { name = "H-thingy"; 
           content  = "projects/hmatrix/index.con";
           title    = "Project H-thingy"; 
           headline = "Project H-thingy";

      menu { name = "Approximation"; 
             content = "projects/hmatrix/approx.con"; }

      menu { name = "Performance";   
             content = "projects/hmatrix/perf.con";

        tab { name = "Matrix-Vector";    
              content = "projects/hmatrix/mv.con"; }
        tab { name = "Matrix-Matrix";    
              content = "projects/hmatrix/mm.con"; }
        tab { name = "Matrix-Inversion"; 
              content = "projects/hmatrix/mi.con"; }
      }

      menu { name = "Tips"; content = "";

        tab { name = "malloc"; 
              content = "projects/hmatrix/malloc.con"; }
        tab { name = "BLAS";   
              content = "projects/hmatrix/blas.con";   }
      }
    }
  }
}

Falls title, headline oder css-Dateien nicht in einem Menüeintrag spezifiziert wurden, werden die entsprechenden Einträge des Vater-Menüs verwendet.

Falls keine Inhalts-Datei aber eine Html-Datei angegeben wurde, wird diese als Verweis interpretiert und direkt im Menü abgelegt.