leeHTML.cpp

Ir a la documentaciĆ³n de este archivo.
00001 // vim: set expandtab tabstop=8 shiftwidth=8 foldmethod=marker:
00012 #include <stdio.h>
00013 #include <iostream>
00014 #include <fstream>
00015 #include "NodoTrieS.hpp"
00016 
00017 using namespace std;
00018 
00019 void insertaNormalizada(string pal, long ndoc, long p, NodoTrieS &t,
00020                         bool normalizaPal)
00021 {
00022         if (pal.size() >= MAXCAD) {
00023                 pal = pal.substr(0, MAXCAD);
00024         }
00025         //clog<<"Leida "<<pal<<endl;
00026         if (p >= 0) {
00027                 string r;
00028                 if (normalizaPal) {
00029                         r = normaliza(pal);
00030                 } else {
00031                         r = pal;
00032                 }
00033                 if (r.size()>0) {
00034                         t.inserta(r, Pos(ndoc, p));
00035                         //clog<<"  Insertada"<<endl;
00036                 }
00037         }
00038 }
00039 
00041 void leeHTML(const char *na, long ndoc, NodoTrieS &t, bool normalizaPal)
00042 {
00043         ASSERT(na!=NULL && na[0] != '\0' && strlen(na)<FILENAME_MAX);
00044         ASSERT(ndoc >= 0);
00045 
00046         string pal = "";
00047         //clog<<"Leyendo de "<<na<<endl;
00048         // Error si no existe
00049         ifstream fs(na);
00050 
00051         long p;
00052         p = fs.tellg();
00053         int estado = 0;
00058         do {
00059                 char c[2];
00060                 fs.read(&c[0], 1);
00061                 c[1] = '\0';
00062                 //clog << "OJO c=" << c << " estado=" << estado << endl;
00063                 if (estado == 0 && *c == '<') {
00064                         estado = 2;
00065                         insertaNormalizada(pal, ndoc, p + 1, t, normalizaPal);
00066                         //clog << "De 0 a 2" << endl;
00067                 } else if (estado == 2 && *c == '>') {
00068                         estado = 0;
00069                         p = fs.tellg();
00070                         pal = "";
00071                         //clog << "De 2 a 0" << endl;
00072                 } else if (estado == 0 && isspace(*c)) {
00073                         estado = 1;
00074                         insertaNormalizada(pal, ndoc, p, t, normalizaPal);
00075                         pal = "";
00076                         //clog << "De 0 a 1" << endl;
00077                 } else if (estado == 1 && *c == '<') {
00078                         estado = 2;
00079                         //clog << "De 1 a 2" << endl;
00080                 } else if (estado == 1 && !isspace(*c)) {
00081                         estado = 0;
00082                         p = fs.tellg();
00083                         pal = (char *)c;
00084                         //clog << "De 1 a 0" << endl;
00085                 } else if (estado == 0) {
00086                         pal = pal + string((const char *)c);
00087                 }
00088         } while (!fs.eof());
00089         fs.close();
00090         insertaNormalizada(pal, ndoc, p, t, normalizaPal);
00091 }
00092 
00093 
00094 

Generado el Wed Jan 6 06:58:22 2010 para Mt77 por  doxygen 1.5.4