/*---------------------------------------------------------------------------------------------------------------------
- File      : txt2html.cc                                                                 Project ELSE, EPFL - DI/LIA -
-                                                                       Evaluation in Language and Speech Engineering -
- Author    : Seydoux Florian   Creation date : 5 July 1999                                                           -
- Eulogist  : -                 Approval date : -                  Version: 0.1                                       -
-                                                                                                                     -
- Descript. : Translate '&', '<' and '>' to composed form -> make a taggeable (HTML) version of the text              -
-                                                                                                                     -
- Requested : -                                                                                                       -
-                                                                                                                     -
- Gaps      : o)                                                                                                      -
-                                                                                                                     -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Rev. date | Reviser               | Revise's description                                                            -
- - - - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ../../....| ........              | ...                                                                             -
---------------------------------------------------------------------------------------------------------------------*/

#ifndef TXT2HTML
#define TXT2HTML

#include <fstream>
#include <iostream>
#include "untagger.h"

#ifdef __STL_USE_NAMESPACES
    namespace Else { 
#endif // __STL_USE_NAMESPACES

int main(int argc, char* argv[]);

int main(int argc, char* argv[]) {
    if (argc < 3) {
        cerr << "Usage:   txt2html <raw text> <html compatible> [-p]\n"
             << "  -p :   prudent transcoding, compute only isolate '&'\n\n";
        exit (1);
    }
    ifstream* input = new ifstream(argv[1],ios::in);
    if (!(*input)) {
        cerr << "ERROR: unable to open raw file: " << argv[1] << '\n';
        exit (2);
    }
    ofstream* target = new ofstream(argv[2],ios::out|ios::trunc);
    if (!(*target)) {
        cerr << "ERROR: unable to create 'html' file: " << argv[2] << '\n';
        exit (3);
    }
    
    CharFlowToStream endFlow(*target);
    FiltersPool pool(endFlow);

    if (argc == 4) { // && (argv[3] '==' "-p")
        pool.addFilter(new QuietTranslateFilter(string("& "), string("&amp ")), true);
        pool.addFilter(new QuietTranslateFilter(string("&'"), string("&amp;'")), true);
        pool.addFilter(new QuietTranslateFilter(string("&\""), string("&amp;\"")), true);
        pool.addFilter(new QuietTranslateFilter(string("&."), string("&amp;.")), true);
        pool.addFilter(new QuietTranslateFilter(string("&\n"), string("&amp;\n")), true);
        pool.addFilter(new QuietTranslateFilter(string("&\t"), string("&amp;\t")), true);
        pool.addFilter(new QuietTranslateFilter(string("&;"), string("&amp;;")), true);
    } else {
        pool.addFilter(new QuietTranslateFilter(string("&"), string("&amp;")), true);
    }
    pool.addFilter(new QuietTranslateFilter(string("< "), string("&lt ")), true);
    pool.addFilter(new QuietTranslateFilter(string("<"), string("&lt;")), true);
    pool.addFilter(new QuietTranslateFilter(string("> "), string("&gt ")), true);
    pool.addFilter(new QuietTranslateFilter(string(">"), string("&gt;")), true);
    pool.addFilter(new QuietTranslateFilter(string("\" "), string("&quot ")), true);
    pool.addFilter(new QuietTranslateFilter(string("\""), string("&quot;")), true);

//  pool.initialize();
    
    char c;
    while (input->get(c)) pool <<= c;

    pool.flush();

    input->close();
    target->close();
    delete input;
    delete target;
    
    exit(0);
}

#ifdef __STL_USE_NAMESPACES
}
#endif // __STL_USE_NAMESPACES

#endif // TXT2HTML

