/*txt2html - Programm zur Konvertierung einer *.txt-datei nach HTML
  2002 von Matin Lang
  Ver&ouml;ffentlicht unter der GNU-Lizenz f&uuml;r freie Software
*/
 
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <sstream>
 
 
using namespace std;
 
vector<string> einlesen(string& dateiname){ // zeilenweise einlesen aus der datei in vector<string> daten
 
	ifstream infile(dateiname.c_str());
 
	string zeile;
	vector<string> daten;
 
	while (getline(infile, zeile)){
 
		daten.push_back(zeile);
		
	}
	
	return daten;
}
void ausgabe(vector<string>& daten, string& dateiname, string& schriftfarbe, string& schriftart, string& schriftgroesse, string& hintergrund, string& fett, string& titel){ // schreiben der *.html-datei
 
	dateiname += ".html";
 
	ofstream outfile(dateiname.c_str());
	
		outfile << "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"><html><head><title>" << titel << "</title>" << endl;
		outfile << endl;
		outfile << "<meta name=\"description\" content=\"Text\">" << endl;
		outfile << "<meta name=\"author\" content=\"txt2html (*.txt  zu *.html Konverter - www.bediener.de ) - Sonderkomplilat f&uuml;r 'Das Hebammenteam'\">" << endl;
		outfile << "<meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\"></head>" << endl;
	    outfile << endl;
		outfile << "<body text=\"#" << schriftfarbe <<"\" bgcolor=\"#" << hintergrund << "\" link=\"#000080\" alink=\"#999999\" vlink=\"#f0e68c\">" << endl;
		outfile << endl;
		outfile << "<font face=\"" << schriftart << "\"><font size=\"" << schriftgroesse <<"\">" << endl;
		outfile << endl;
		outfile << endl;
 
 
		bool a = 0;	
 
		for (int i = 0; i != daten.size(); ++i){
			
			if (daten[i] == " "){
			
				a = 1;
				outfile << "<br>" <<endl;
			}
 
			else{
 
				if (a == 1 && fett == "j"){
				
					outfile << "<b>" << daten[i] << "</b><br>" << endl;
					a = 0;
				}
				
				else{
 
					outfile << daten[i] << "<br>" << endl;
					
				}
			}
		}
	
 
		outfile << endl;
		outfile << endl;
		outfile << "<br></body></html>" << endl;
 
}
 
void umlaut(vector<string>& daten, string& dateiname){ // ersetzen der umlaute durch html-code  - die *.txt-datei wird ver&auml;ndert
 
	vector<string> stuecke;
	string stueck;
    
	ofstream outfile(dateiname.c_str());
 
	for (int i = 0; i != daten.size() ; ++i){
 
		if (daten[i] == ""){
 
				daten[i] = " ";
			}
 
		for (int j = 0 ; j != daten[i].size() ; ++j){
 
			stueck = daten[i].substr(j,1);
			stuecke.push_back(stueck);
		
			
			if (stuecke[j] == "&auml;"){
 
				stuecke[j] = "&auml;";
			}
			if (stuecke[j] == "&ouml;"){
		
				stuecke[j] = "&ouml;";
			}
			if (stuecke[j] == "&uuml;"){
			
				stuecke[j] = "&uuml;";
			}	
			if (stuecke[j] == "&szlig;"){
			
				stuecke[j] = "&szlig;";
			}
					
			outfile << stuecke[j];
		}
		outfile << endl;
		stuecke.clear();
	}
}
string leerzeichen(string& zeile){
 
	for (int i = 0 ; i != zeile.size() ; ++i){
 
		if (zeile[i] == '_'){
 
			zeile[i] = ' ';
		}
	}
	return zeile;
}
 
 
int main(int argc, char **argv){ // Hauptprogramm incl. Anfangsdialog
	
	cout << "Hallo ! " << endl;
	cout << "Bitte folgende Fragen, die die Gestaltung der HTML-Seite betreffen, beantworten." << endl;
	cout << endl;
	cout << "Welche Hintergrundfarbe soll die Seite haben ?" << endl;
	cout << "Angaben bitte in Hexadezimalwerten." << endl;
	cout << "Ein Tool zur Ermittlung dieses Codes findest du unter:" << endl;
	cout << "www.selfhtml.teamone.de/helferlein/farben.htm." << endl;
	
	string hintergrund;
	cin >> hintergrund;
	
	cout << endl;
	cout << "Welche Farbe soll die Schrift haben ? Auch hier hilft selfhtml (siehe oben) " << endl;
 
	string schriftfarbe;
	cin >> schriftfarbe;
 
	cout << endl;
	cout << "Wie gro&szlig; soll die Schrift sein ?" << endl;
 
	string schriftgroesse;
	cin >> schriftgroesse;
 
	cout << endl;
	cout << "Welche Schriftart (z.B.: Times New Roman, Arial, MS comic Sans) soll verwendet werden ?" << endl;
	cout << "Bei mehreren W&ouml;rtern bitte statt des Leerzeichens den Unterstrich \"_\" benutzen!" << endl;
 
	string schriftart;
	cin >> schriftart;
 
	cout << endl;
	cout << "Sollen Zeilen nach Leerzeilen prinzipell fett geschrieben werden ? [j / n]" << endl;
	cout << "(Kleiner Tipp: bei 'j' kann eine nichtfette Zeile nach einer Leerzeile erzeugt werden," << endl;
	cout << "indem man in die 'Leerzeile' 2 !!! (in Worten: ZWEI) Leerzeichen schreibt)" << endl;
 
	string fett;
	cin >> fett;
 
	cout << endl;
	cout << "Wie soll die Titelzeile lauten ?" << endl;
    	cout << "Bei mehreren W&ouml;rtern bitte statt des Leerzeichens den Unterstrich \"_\" benutzen!" << endl;
 
	string titel;
	cin >> titel;
 
	string dateiname = argv[1];
	string ausgabename = argv[2];
	
	cout << "Die erzeugte Datei hat den Namen: \"" << ausgabename << ".html\", und liegt in diesem Verzeichnis !" << endl;
 
	vector<string> daten = einlesen(dateiname);
	umlaut(daten, dateiname);
	daten = einlesen(dateiname);
	titel = leerzeichen(titel);
	schriftart = leerzeichen(schriftart);
	ausgabe(daten, ausgabename, schriftfarbe, schriftart, schriftgroesse, hintergrund, fett, titel);
	
return 0;
}
