From: Frederik Gladhorn Date: Tue, 28 Aug 2007 14:02:43 +0000 (+0000) Subject: Moved some type handling compability functions to the compability class. X-Git-Tag: v3.93.0~14 X-Git-Url: https://git.rmz.fi/?a=commitdiff_plain;h=732a14b8b8798b4049b221b55a48e669bce32019;p=libqmvoc.git Moved some type handling compability functions to the compability class. svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=705750 --- diff --git a/keduvocdocument/keduvockvtmlcompability.cpp b/keduvocdocument/keduvockvtmlcompability.cpp index 0a2fc2a..ad73afe 100644 --- a/keduvocdocument/keduvockvtmlcompability.cpp +++ b/keduvocdocument/keduvockvtmlcompability.cpp @@ -23,21 +23,28 @@ #include "keduvockvtmlcompability.h" -const QString KEduVocKvtmlCompability::USAGE_USER_DEFINED = QString("#"); -const QString KEduVocKvtmlCompability::USAGE_SEPERATOR = QString(":"); +#include + +const QString KEduVocKvtmlCompability::KVTML_1_USAGE_USER_DEFINED = QString("#"); +const QString KEduVocKvtmlCompability::KVTML_1_USAGE_SEPERATOR = QString(":"); + +const QString KEduVocKvtmlCompability::KVTML_1_TYPE_USER = QString("#"); +const QString KEduVocKvtmlCompability::KVTML_1_TYPE_DIV = QString(":"); KEduVocKvtmlCompability::KEduVocKvtmlCompability() { m_usages = usageMap(); m_userdefinedUsageCounter = 0; + + initOldTypeLists(); } QSet KEduVocKvtmlCompability::usageFromKvtml1(const QString & oldUsage) const { QSet usages; - foreach ( QString usage , oldUsage.split(USAGE_SEPERATOR, QString::SkipEmptyParts) ) { + foreach ( QString usage , oldUsage.split(KVTML_1_USAGE_SEPERATOR, QString::SkipEmptyParts) ) { usages.insert( m_usages[usage] ); } return usages; @@ -103,7 +110,7 @@ void KEduVocKvtmlCompability::addUserdefinedUsage(const QString & usage) { // start counting at 1 !!! m_userdefinedUsageCounter++; - m_usages[USAGE_USER_DEFINED + QString::number(m_userdefinedUsageCounter)] = usage; + m_usages[KVTML_1_USAGE_USER_DEFINED + QString::number(m_userdefinedUsageCounter)] = usage; } QSet< QString > KEduVocKvtmlCompability::documentUsages() const @@ -112,3 +119,87 @@ QSet< QString > KEduVocKvtmlCompability::documentUsages() const } + +////////////////// TYPES ///////////////////////////////////////// +void KEduVocKvtmlCompability::initOldTypeLists() +{ + m_oldMainTypeNames.clear(); + m_oldMainTypeNames.insert("v", i18n("Verb")); + m_oldMainTypeNames.insert("n", i18n("Noun")); + m_oldMainTypeNames.insert("nm", i18n("Name")); + m_oldMainTypeNames.insert("ar", i18n("Article")); + m_oldMainTypeNames.insert("aj", i18n("Adjective")); + m_oldMainTypeNames.insert("av", i18n("Adverb")); + m_oldMainTypeNames.insert("pr", i18n("Pronoun")); + m_oldMainTypeNames.insert("ph", i18n("Phrase")); + m_oldMainTypeNames.insert("num", i18n("Numeral")); + m_oldMainTypeNames.insert("con", i18n("Conjunction")); + m_oldMainTypeNames.insert("pre", i18n("Preposition")); + m_oldMainTypeNames.insert("qu", i18n("Question")); + m_oldMainTypeNames.insert("ifm", i18n("Informal")); + m_oldMainTypeNames.insert("fig", i18n("Figuratively")); + + m_oldSubTypeNames.clear(); + m_oldSubTypeNames.insert("ord", i18n("Ordinal")); + m_oldSubTypeNames.insert("crd", i18n("Cardinal")); + m_oldSubTypeNames.insert("def", i18n("Definite")); + m_oldSubTypeNames.insert("ind", i18n("Indefinite")); + m_oldSubTypeNames.insert("re", i18n("Regular")); + m_oldSubTypeNames.insert("ir", i18n("Irregular")); + m_oldSubTypeNames.insert("pos", i18n("Possessive")); + m_oldSubTypeNames.insert("per", i18n("Personal")); + m_oldSubTypeNames.insert("m", i18n("Male")); + m_oldSubTypeNames.insert("f", i18n("Female")); + m_oldSubTypeNames.insert("s", i18n("Neutral")); + +} + + +QString KEduVocKvtmlCompability::mainTypeFromOldFormat(const QString & typeSubtypeString) const +{ + QString mainType; + int i; + + if ((i = typeSubtypeString.indexOf(KVTML_1_TYPE_DIV)) >= 0) + mainType = typeSubtypeString.left(i); + else + mainType = typeSubtypeString; + + // convert from pre-0.5 versions (I guess we can just leave that in here. + // I seriously doubt that any such documents exist... + if (mainType == "1") { + mainType = QM_VERB; + } + else if (mainType == "2") { + mainType = QM_NOUN; + } + else if (mainType == "3") { + mainType = QM_NAME; + } + + QString wt = m_oldMainTypeNames.value( mainType ); + if ( wt == QString() ) { + kDebug() << "Unknown old maintype: " << typeSubtypeString; + return typeSubtypeString; + } + return wt; +} + + +QString KEduVocKvtmlCompability::subTypeFromOldFormat(const QString & typeSubtypeString) const +{ + int i; + QString t = typeSubtypeString; + if ((i = t.indexOf(KVTML_1_TYPE_DIV)) >= 0) { + t.remove(0, i+1); + } else { + return QString(); + } + + QString wt = m_oldSubTypeNames.value( t ); + if ( wt == QString() ) { + kDebug() << "Unknown old maintype: " << typeSubtypeString; + return typeSubtypeString; + } + return wt; +} diff --git a/keduvocdocument/keduvockvtmlcompability.h b/keduvocdocument/keduvockvtmlcompability.h index 1013ef1..a23fb75 100644 --- a/keduvocdocument/keduvockvtmlcompability.h +++ b/keduvocdocument/keduvockvtmlcompability.h @@ -30,6 +30,54 @@ #include + + + + +// internal types, indented are subtypes + +#define QM_VERB "v" // go +// #define QM_VERB_IRR "ir" +// #define QM_VERB_REG "re" +#define QM_NOUN "n" // table, coffee +// #define QM_NOUN_F "f" +// #define QM_NOUN_M "m" +// #define QM_NOUN_S "s" +#define QM_NAME "nm" +// #define QM_ART "ar" // article +// #define QM_ART_DEF "def" // definite a/an +// #define QM_ART_IND "ind" // indefinite the +#define QM_ADJ "aj" // adjective expensive, good +// #define QM_ADV "av" // adverb today, strongly +// #define QM_PRON "pr" // pronoun you, she +// #define QM_PRON_POS "pos" // possessive my, your +// #define QM_PRON_PER "per" // personal +// #define QM_PHRASE "ph" +// #define QM_NUM "num" // numeral +// #define QM_NUM_ORD "ord" // ordinal first, second +// #define QM_NUM_CARD "crd" // cardinal one, two +// #define QM_INFORMAL "ifm" +// #define QM_FIG "fig" +// #define QM_CON "con" // conjuncton and, but +// #define QM_PREP "pre" // preposition behind, between +// #define QM_QUEST "qu" // question who, what + +// type delimiters + +#define QM_USER_TYPE "#" // designates number of user type +#define QM_TYPE_DIV ":" // divide main from subtype + +// usage delimiters (also declared in UsageManager.h) + +#define UL_USER_USAGE "#" // designates number of user type + + + + + + + + /** * @file contains defines and constants necessary for reading kvtml files prior to KDE4. kvtml version 1. */ @@ -64,6 +112,11 @@ public: */ QSet documentUsages() const; + ///// TYPES + QString mainTypeFromOldFormat(const QString& typeSubtypeString) const; + QString subTypeFromOldFormat(const QString& typeSubtypeString) const; + + private: /** * This gives a map of old abbreviations used in the files and their meaning. @@ -76,12 +129,29 @@ private: QMap< QString, QString > m_usages; /// # defines user defined usage - static const QString USAGE_USER_DEFINED; + static const QString KVTML_1_USAGE_USER_DEFINED; /// : seperates usages - static const QString USAGE_SEPERATOR; + static const QString KVTML_1_USAGE_SEPERATOR; /// only order was decisive, we have to keep count. int m_userdefinedUsageCounter; + + +//////////// TYPES ///////////////// + void initOldTypeLists(); + + + /// user defined types of old documents +// QStringList m_userTypeDescriptions; + + + + QMap m_oldMainTypeNames; + QMap m_oldSubTypeNames; + + static const QString KVTML_1_TYPE_USER; + static const QString KVTML_1_TYPE_DIV; + }; diff --git a/keduvocdocument/keduvockvtmlreader.cpp b/keduvocdocument/keduvockvtmlreader.cpp index 28cde17..66927e7 100644 --- a/keduvocdocument/keduvockvtmlreader.cpp +++ b/keduvocdocument/keduvockvtmlreader.cpp @@ -980,18 +980,9 @@ bool KEduVocKvtmlReader::readExpressionChildAttributes( QDomElement &domElementE } } type = m_oldSelfDefinedTypes.value(selfDefinedTypeIndex); - } else { // not user defined - preset types - // convert from pre-0.5 versions (I guess we can just leave that in here. - // I seriously doubt that any such documents exist... - if (oldType == "1") - oldType = QM_VERB; - else if (oldType == "2") - oldType = QM_NOUN; - else if (oldType == "3") - oldType = QM_NAME; - - type = m_doc->wordTypes()->mainTypeFromOldFormat(oldType); - subType = m_doc->wordTypes()->subTypeFromOldFormat(oldType); + } else { + type = m_compability.mainTypeFromOldFormat(oldType); + subType = m_compability.subTypeFromOldFormat(oldType); } // not user defined - preset types } @@ -1095,18 +1086,9 @@ bool KEduVocKvtmlReader::readExpression(QDomElement &domElementParent) } } type = m_oldSelfDefinedTypes.value(selfDefinedTypeIndex); - } else { // not user defined - preset types - // convert from pre-0.5 versions (I guess we can just leave that in here. - // I seriously doubt that any such documents exist... - if (oldType == "1") - oldType = QM_VERB; - else if (oldType == "2") - oldType = QM_NOUN; - else if (oldType == "3") - oldType = QM_NAME; - - type = m_doc->wordTypes()->mainTypeFromOldFormat(oldType); - subType = m_doc->wordTypes()->subTypeFromOldFormat(oldType); + } else { + type = m_compability.mainTypeFromOldFormat(oldType); + subType = m_compability.subTypeFromOldFormat(oldType); } // not user defined - preset types } diff --git a/keduvocdocument/keduvockvtmlwriter.h b/keduvocdocument/keduvockvtmlwriter.h index 9d07f7f..bcaee0e 100644 --- a/keduvocdocument/keduvockvtmlwriter.h +++ b/keduvocdocument/keduvockvtmlwriter.h @@ -26,6 +26,7 @@ #include "keduvocgrammar.h" #include "keduvocmultiplechoice.h" +#include "keduvockvtmlcompability.h" class KEduVocDocument; diff --git a/keduvocdocument/keduvocwordtype.cpp b/keduvocdocument/keduvocwordtype.cpp index d9cb698..57fee5b 100644 --- a/keduvocdocument/keduvocwordtype.cpp +++ b/keduvocdocument/keduvocwordtype.cpp @@ -74,12 +74,6 @@ public: /// Map containing the word type name and its properties. QList m_wordTypeList; - QMap m_oldMainTypeNames; - QMap m_oldSubTypeNames; - - static const QString KVTML_1_TYPE_USER; - static const QString KVTML_1_TYPE_DIV; - static const QString WORDTYPE_NOUN; static const QString WORDTYPE_NOUN_MALE; static const QString WORDTYPE_NOUN_FEMALE; @@ -103,9 +97,6 @@ public: static const QString WORDTYPE_ADVERB_EXPLANATION; }; -const QString KEduVocWordType::Private::KVTML_1_TYPE_USER = QString("#"); -const QString KEduVocWordType::Private::KVTML_1_TYPE_DIV = QString(":"); - const QString KEduVocWordType::Private::WORDTYPE_NOUN = QString("noun"); const QString KEduVocWordType::Private::WORDTYPE_NOUN_MALE = QString("noun:male"); const QString KEduVocWordType::Private::WORDTYPE_NOUN_FEMALE = QString("noun:female"); @@ -136,16 +127,13 @@ const QString KEduVocWordType::Private::WORDTYPE_ADVERB_EXPLANATION = QString("T KEduVocWordType::KEduVocWordType() : d(new Private) { - // this should go into the old reader/writer - initOldTypeLists(); + } KEduVocWordType::KEduVocWordType(const KEduVocWordType & other) : d(new Private) { d->m_wordTypeList = other.d->m_wordTypeList; - d->m_oldMainTypeNames = other.d->m_oldMainTypeNames; - d->m_oldSubTypeNames = other.d->m_oldSubTypeNames; } KEduVocWordType::~KEduVocWordType() @@ -161,77 +149,6 @@ KEduVocWordType & KEduVocWordType::operator =(const KEduVocWordType & other) } -QString KEduVocWordType::mainTypeFromOldFormat(const QString & typeSubtypeString) const -{ - QString mainType; - int i; - - if ((i = typeSubtypeString.indexOf(d->KVTML_1_TYPE_DIV)) >= 0) - mainType = typeSubtypeString.left(i); - else - mainType = typeSubtypeString; - - QString wt = d->m_oldMainTypeNames.value( mainType ); - if ( wt == QString() ) { - kDebug() << "Unknown old maintype: " << typeSubtypeString; - return typeSubtypeString; - } - return wt; -} - - -QString KEduVocWordType::subTypeFromOldFormat(const QString & typeSubtypeString) const -{ - int i; - QString t = typeSubtypeString; - if ((i = t.indexOf(d->KVTML_1_TYPE_DIV)) >= 0) { - t.remove(0, i+1); - } else { - return QString(); - } - - QString wt = d->m_oldSubTypeNames.value( t ); - if ( wt == QString() ) { - kDebug() << "Unknown old maintype: " << typeSubtypeString; - return typeSubtypeString; - } - return wt; -} - - -void KEduVocWordType::initOldTypeLists() -{ - d->m_oldMainTypeNames.clear(); - d->m_oldMainTypeNames.insert("v", i18n("Verb")); - d->m_oldMainTypeNames.insert("n", i18n("Noun")); - d->m_oldMainTypeNames.insert("nm", i18n("Name")); - d->m_oldMainTypeNames.insert("ar", i18n("Article")); - d->m_oldMainTypeNames.insert("aj", i18n("Adjective")); - d->m_oldMainTypeNames.insert("av", i18n("Adverb")); - d->m_oldMainTypeNames.insert("pr", i18n("Pronoun")); - d->m_oldMainTypeNames.insert("ph", i18n("Phrase")); - d->m_oldMainTypeNames.insert("num", i18n("Numeral")); - d->m_oldMainTypeNames.insert("con", i18n("Conjunction")); - d->m_oldMainTypeNames.insert("pre", i18n("Preposition")); - d->m_oldMainTypeNames.insert("qu", i18n("Question")); - d->m_oldMainTypeNames.insert("ifm", i18n("Informal")); - d->m_oldMainTypeNames.insert("fig", i18n("Figuratively")); - - d->m_oldSubTypeNames.clear(); - d->m_oldSubTypeNames.insert("ord", i18n("Ordinal")); - d->m_oldSubTypeNames.insert("crd", i18n("Cardinal")); - d->m_oldSubTypeNames.insert("def", i18n("Definite")); - d->m_oldSubTypeNames.insert("ind", i18n("Indefinite")); - d->m_oldSubTypeNames.insert("re", i18n("Regular")); - d->m_oldSubTypeNames.insert("ir", i18n("Irregular")); - d->m_oldSubTypeNames.insert("pos", i18n("Possessive")); - d->m_oldSubTypeNames.insert("per", i18n("Personal")); - d->m_oldSubTypeNames.insert("m", i18n("Male")); - d->m_oldSubTypeNames.insert("f", i18n("Female")); - d->m_oldSubTypeNames.insert("s", i18n("Neutral")); - -} - /* QString KEduVocWordType::oldType(const QString & mainType, const QString & subType) const diff --git a/keduvocdocument/keduvocwordtype.h b/keduvocdocument/keduvocwordtype.h index a8a430d..d896966 100644 --- a/keduvocdocument/keduvocwordtype.h +++ b/keduvocdocument/keduvocwordtype.h @@ -130,10 +130,6 @@ public: void printDebugWordTypes(); - // these should move into the old writer/reader - QString mainTypeFromOldFormat(const QString& typeSubtypeString) const; - QString subTypeFromOldFormat(const QString& typeSubtypeString) const; - QString typeOfSpecialType( const QString& specialType ) const; QString specialTypeNoun() const; @@ -142,11 +138,6 @@ public: QString specialTypeAdverb() const; private: - void initOldTypeLists(); - - - /// user defined types of old documents -// QStringList m_userTypeDescriptions; QString mainTypeName(int index) const; diff --git a/keduvocdocument/kvtmldefs.h b/keduvocdocument/kvtmldefs.h index b29d6c7..ff119a8 100644 --- a/keduvocdocument/kvtmldefs.h +++ b/keduvocdocument/kvtmldefs.h @@ -217,43 +217,5 @@ static const QLatin1String KV_ART_ENTRY("e"); // article entry #define KV_CON_P3PN "p3n" // 3. person plural natural #define KV_CONJ_COMMON "common" // female contains common for all three -// internal types, indented are subtypes - -#define QM_VERB "v" // go -// #define QM_VERB_IRR "ir" -// #define QM_VERB_REG "re" -#define QM_NOUN "n" // table, coffee -// #define QM_NOUN_F "f" -// #define QM_NOUN_M "m" -// #define QM_NOUN_S "s" -#define QM_NAME "nm" -// #define QM_ART "ar" // article -// #define QM_ART_DEF "def" // definite a/an -// #define QM_ART_IND "ind" // indefinite the -#define QM_ADJ "aj" // adjective expensive, good -// #define QM_ADV "av" // adverb today, strongly -// #define QM_PRON "pr" // pronoun you, she -// #define QM_PRON_POS "pos" // possessive my, your -// #define QM_PRON_PER "per" // personal -// #define QM_PHRASE "ph" -// #define QM_NUM "num" // numeral -// #define QM_NUM_ORD "ord" // ordinal first, second -// #define QM_NUM_CARD "crd" // cardinal one, two -// #define QM_INFORMAL "ifm" -// #define QM_FIG "fig" -// #define QM_CON "con" // conjuncton and, but -// #define QM_PREP "pre" // preposition behind, between -// #define QM_QUEST "qu" // question who, what - -// type delimiters - -#define QM_USER_TYPE "#" // designates number of user type -#define QM_TYPE_DIV ":" // divide main from subtype - -// usage delimiters (also declared in UsageManager.h) - -#define UL_USER_USAGE "#" // designates number of user type - - #endif // KVTMLDEFS_H