From 550f0ac12bf19424712d5d5da3ec61967c7422df Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Sun, 24 Feb 2008 19:28:56 +0000 Subject: [PATCH] enable writing of declensions svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=778861 --- keduvocdocument/keduvocdeclension.cpp | 23 +++++++++++++++++++---- keduvocdocument/keduvocdeclension.h | 4 ++-- keduvocdocument/keduvoctext.cpp | 3 +++ keduvocdocument/kvtml2defs.h | 13 +++++++++++++ 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/keduvocdocument/keduvocdeclension.cpp b/keduvocdocument/keduvocdeclension.cpp index 8fead39..16c4dfb 100644 --- a/keduvocdocument/keduvocdeclension.cpp +++ b/keduvocdocument/keduvocdeclension.cpp @@ -93,10 +93,25 @@ void KEduVocDeclension::toXML(QDomElement & parent) return; } QDomDocument domDoc = parent.ownerDocument(); - QDomElement gradeElement = domDoc.createElement( KVTML_DECLENSION ); - parent.appendChild(gradeElement); - - ///@todo write contents + QDomElement declensionElement = domDoc.createElement( KVTML_DECLENSION ); + + for ( KEduVocDeclension::DeclensionNumber num = KEduVocDeclension::Singular; num <= KEduVocDeclension::Plural; num = KEduVocDeclension::DeclensionNumber(num +1) ) { + QDomElement numberElement = domDoc.createElement( KVTML_GRAMMATICAL_NUMBER[num] ); + for ( KEduVocDeclension::DeclensionCase dcase = KEduVocDeclension::Nominative; dcase < KEduVocDeclension::DeclensionCaseMAX; dcase = KEduVocDeclension::DeclensionCase(dcase +1) ) { + QDomElement caseElement = domDoc.createElement( KVTML_DECLENSION_CASE[dcase] ); + declension(num, dcase).toXML(caseElement); + + if (caseElement.hasChildNodes()) { + numberElement.appendChild(caseElement); + } + } + if (numberElement.hasChildNodes()) { + declensionElement.appendChild(numberElement); + } + } + if (declensionElement.hasChildNodes()) { + parent.appendChild(declensionElement); + } } diff --git a/keduvocdocument/keduvocdeclension.h b/keduvocdocument/keduvocdeclension.h index 3c44abe..c120fe5 100644 --- a/keduvocdocument/keduvocdeclension.h +++ b/keduvocdocument/keduvocdeclension.h @@ -35,13 +35,13 @@ A declension contains all forms that a NOUN possibly can have. class KEDUVOCDOCUMENT_EXPORT KEduVocDeclension{ public: enum DeclensionNumber { - Singular = 1, + Singular = 0, Dual, Plural }; enum DeclensionCase { - Nominative = 1, + Nominative = 0, Genitive, Dative, Accusative, diff --git a/keduvocdocument/keduvoctext.cpp b/keduvocdocument/keduvoctext.cpp index 471b317..4909911 100644 --- a/keduvocdocument/keduvoctext.cpp +++ b/keduvocdocument/keduvoctext.cpp @@ -173,6 +173,9 @@ bool KEduVocText::operator ==(const KEduVocText & other) const void KEduVocText::toXML(QDomElement& parent) { QDomDocument domDoc = parent.ownerDocument(); + if (text().isEmpty()) { + return; + } // the text KEduVocKvtml2Writer::appendTextElement( parent, KVTML_TEXT, text() ); diff --git a/keduvocdocument/kvtml2defs.h b/keduvocdocument/kvtml2defs.h index 3940443..97c232a 100644 --- a/keduvocdocument/kvtml2defs.h +++ b/keduvocdocument/kvtml2defs.h @@ -44,6 +44,19 @@ // declension #define KVTML_DECLENSION "declension" +static const QString KVTML_DECLENSION_CASE[] = { + "nominative", + "genitive", + "dative", + "accusative", + "ablative", + "locative", + "vocative" }; + +static const QString KVTML_GRAMMATICAL_NUMBER[] = { + "singular", + "dual", + "plural" }; // conjugation and personal pronouns #define KVTML_CONJUGATION "conjugation" -- 2.47.3