# (c) Level One Entertainment, - AP 2006
#
# Dieses Perl skript liest das sourcefile
# und durchsucht es nach <include tags
#
# Sofern nicht vorhanden, werden im include verzeichnis
# die files angelegt
#------------------------------------------------------------------------------
#
# Gesucht wird nach "<!include=Textzumdarstellen,,>
#
# Die zwei ",," Zeichen sind der Indikator dafür das ein File
# mit Filenamen "Textzumdarstellen_i.html" erzeugt werden soll.
#
# Gesucht wird nach "<!include=Textzumdarstellen,includeFILEName,>
#
# includeFilename wird auf existenz geprüft. Ist es nicht vorhanden
# dann wird es erzeugt: includeFILENAME.html
#
#

$force = false; # Alle files werden überschrieben

#
# E I N S T E L L U N G E N
#
# Pfade alle relativ zum skript, das am besten im Root von der html-doku steht.
#
$sourcefile = "deu_doku.src/l3lib_schema.html";
$includedir = "deu_include.src/";
$xmldir     = "deu_xml/";

#
# TEXT der in den neu erzeugten Files geschrieben wird
# 
$emptytext = "<div class=\"function_small\" >" .
             "<!xml=@@@INCNAME@@@,function_small.xsl>"  .
             "</div>";

#
# TEXT der in den neu erzeugten XML Files geschrieben wird
# 
$emptyxml = "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>\n" .
			"<!DOCTYPE f SYSTEM \"function.dtd\">\n" .
			"<?xml-stylesheet type=\"text/xsl\" href=\"function.xsl\"?>\n" .
			"<f>\n" .
			"	<Funktionsname>@@@XMLNAME@@@</Funktionsname>\n" .
			"	<Beschreibung>In Arbeit</Beschreibung>\n" .
			"	<Returnwert>\n" .
			"		<Typ>int</Typ>\n" .
			"		<Beschreibung>0 bei Erfolg</Beschreibung>\n" .
			"	</Returnwert>\n" .
			"	<Parameter>\n" .
			"		<Arg>\n" .
			"			<Typ>void</Typ>\n" .
			"			<Variablename></Variablename>\n" .
			"			<Beschreibung></Beschreibung>\n" .
			"		</Arg>\n" .
			"	</Parameter>\n" .
			"	<Location>\n" .
			"		<Headerfile>lowlevellib.h</Headerfile>\n" .
			"	</Location>\n" .
			"</f>\n";
             
             
#
# Extension die zum generierten file dazugehängt wird
#
$extension_new = "_i.html";
$extension_old = ".html";



#
# Open Test
#
open(IFILE,"<$sourcefile" ) or die "cannot open $sourcefile";


#
# Lese schleife
#
$/ = "\n"; # Trennsymbol
$zeilen_gesamt = 0;   # Zeilen zähler
$includes_gesamt = 0;    # zählt includes
$filesgeneriert_gesamt = 0; # anzahl generierter Files
$xmlfilesgeneriert_gesamt = 0; # anzahl generierter XML Files

while( <IFILE> ){
  chomp;
  $zeilen_gesamt ++;

  if( $_ =~ m/<!include=(.+),(.*),/ ) {
      $includes_gesamt++;
      print $1 . ":" . $2 . ": ";

      # Wenn $2 leer dann $2 aus $1 genereieren
      $filename = $2;
      if( $filename ){
        $filename = $includedir . $2 . $extension_old;
        $xmlfile  = $2;
      }
      else
      {
        $filename = $includedir . $1 . $extension_new;
        $xmlfile  = $1;
      }
	  $xmlfile =~ /(.*)_i/; # _i entfernen
	  $xmlfile = $1; # _i entfernen

      # Test ob include file vorhanden ist
      if(! -e $filename || $force==true ){
          #gibts nicht dann erzeugen
          open  (OFILE, ">$filename" ) or
                          die "Fehler beim Erzeugen von $filename";
                         
          #text template auflösen und speichern                
		  $text = $emptytext;
		  $text =~ s/@@@INCNAME@@@/$xmlfile/g;
          print OFILE $text;   #ohne "\n" schreiben
          close OFILE;
          
          $filesgeneriert_gesamt ++;
          print "   ". $filename . "    generiert\n";
      }
      else
      {
          print " _i.html:existiert\n";
      }
      
      # Test ob xml file vorhanden ist
      $filename = $xmldir . $xmlfile . ".xml";
      if(! -e $filename || $force==true){
          #gibts nicht dann erzeugen
          open  (OFILE, ">$filename" ) or
                          die "Fehler beim Erzeugen von $filename";
                         
          #text template auflösen und speichern                
		  $text = $emptyxml;
		  $text =~ s/@@@XMLNAME@@@/$xmlfile/g;
          print OFILE $text;   #ohne "\n" schreiben
          close OFILE;
          
          $xmlfilesgeneriert_gesamt ++;
          print "   ". $filename . "    generiert\n";
      }
      else
      {
          print " xml:existiert\n";
      }
      
  }
}

# Cleanup
#
close IFILE;
print "Fertig\n";
print "Gelesene Zeilen............" . $zeilen_gesamt . "\n";
print "Anzahl Include Tags........" . $includes_gesamt . "\n";
print "Generierte Include Files..." . $filesgeneriert_gesamt . "\n";
print "Generierte XML Files......." . $xmlfilesgeneriert_gesamt . "\n";