/*************************************************************************** convert spotlight list to kvtml ----------------------------------------------------------------------- begin : Thu Sep 30 20:00:00 MET 1999 copyright : (C) 1999-2001 Ewald Arnold (C) 2001 The KDE-EDU team email : kvoctrain@ewald-arnold.de ----------------------------------------------------------------------- ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include #include using namespace std; #include #include #define KVD_VERS_PREFIX " v" //#include "kvoctraindoc.h" #define TQM_VERB "v" //#include "QueryManager.h" #include "kvoctraincore.h" #define SPOT_VERSION "v0.2.1" vector lesson_names; struct spotty { TQString type; int lesson; TQString en_rem, // possibly remarks de_rem; TQString en, de; }; vector spottys; void writeSpotty (TQTextStream &os, spotty& spot_line, bool first) { os << " " << spot_line.en.stripWhiteSpace() << "" << spot_line.de.stripWhiteSpace() << "\n"; } void readToMem (TQTextStream &is, TQString month, TQString year) { TQString line; bool lesson_pending = false; TQString lesson_str; spotty spot; bool first_line = true; while (!is.eof() && is.device()->status() == IO_Ok) { line = is.readLine(); int pos; while ((pos = line.find(" ")) >= 0) line.remove (pos, 1); bool head_line = (!line.stripWhiteSpace().isEmpty() && line == line.upper() ); if (first_line && !head_line) { line = is.readLine(); head_line = (!line.stripWhiteSpace().isEmpty() && line == line.upper() ); } first_line = false; if ( line.find ("see p.") >= 0 || line.find ("see pp.") >= 0 || line.find ("see also p") >= 0) { line = ""; } int c = 0x92; while ((pos = line.find (c)) >= 0) line[pos] = '\''; c = 0x94; while ((pos = line.find (c)) >= 0) line[pos] = ' '; pos = 0; while ((pos = line.find ('&', pos)) >= 0) { line.insert (pos+1, "amp;"); pos += 5; // skip & } while ((pos = line.find ('<')) >= 0) { line.remove(pos, 1); line.insert (pos, "<"); } while ((pos = line.find ('>')) >= 0) { line.remove(pos, 1); line.insert (pos, ">"); } if (!line.isEmpty()) { if (head_line) { lesson_pending = true; lesson_str = line + ", "+month+" "+year; } else { pos = line.find ('\t'); if (pos < 0) pos = line.find ('|'); if (pos >= 0) { if (lesson_pending) { lesson_pending = false; lesson_names.push_back(lesson_str.stripWhiteSpace()); } spot.lesson = lesson_names.size(); spot.type = ""; spot.en_rem = ""; spot.de_rem = ""; if (line.left (3) == "to ") { spot.type = TQM_VERB; line.remove (0, 3); pos -= 3; } spot.en = line.mid(0, pos); spot.de = line.mid(pos+1, line.length()-pos-1); if ((pos = spot.en.find(" UK") ) >= 0) { spot.en_rem+= i18n("UK ").local8Bit(); spot.en.remove (pos, 3); } if ((pos = spot.en.find("(UK)") ) >= 0) { spot.en_rem+= i18n("UK ").local8Bit(); spot.en.remove (pos, 4); } if ((pos = spot.en.find(" N. Am.") ) >= 0) { spot.en_rem+= i18n("N. Am. ").local8Bit(); spot.en.remove (pos, 7); } if ((pos = spot.en.find("(N. Am.)") ) >= 0) { spot.en_rem+= i18n("N. Am. ").local8Bit(); spot.en.remove (pos, 8); } if ((pos = spot.en.find(" US") ) >= 0) { spot.en_rem+= i18n("US ").local8Bit(); spot.en.remove (pos, 3); } if ((pos = spot.en.find("(US)") ) >= 0) { spot.en_rem+= i18n("US ").local8Bit(); spot.en.remove (pos, 4); } if ((pos = spot.en.find("ifml.") ) >= 0) { spot.en_rem+= i18n("ifml. ").local8Bit(); spot.en.remove (pos, 5); } if ((pos = spot.en.find("(ifml.)") ) >= 0) { spot.en_rem+= i18n("ifml. ").local8Bit(); spot.en.remove (pos, 7); } if ((pos = spot.en.find("vulg.") ) >= 0) { spot.en_rem+= i18n("vulg. ").local8Bit(); spot.en.remove (pos, 5); } if ((pos = spot.en.find("(vulg.)") ) >= 0) { spot.en_rem+= i18n("vulg. ").local8Bit(); spot.en.remove (pos, 7); } if (!spot.en.isEmpty() && !spot.de.isEmpty()) spottys.push_back(spot); } } } } } void writeToKvtml(TQTextStream &os, TQString month, TQString year) { os << "\n" "\n" "