From f48b8c6929a49d6814b06269feabe314bc66edd7 Mon Sep 17 00:00:00 2001 From: Vladislav Khorev Date: Sat, 13 Dec 2014 11:34:06 +0000 Subject: [PATCH] Refactoring --- rudict/frequent_nouns_2000.xlsx | Bin 53957 -> 53959 bytes rudict/rudict/adjective.cpp | 14 +----- rudict/rudict/adjective.h | 4 +- rudict/rudict/grammarCase.cpp | 38 +++++++++++++++ rudict/rudict/grammarCase.h | 22 ++++++++- rudict/rudict/http/request_handler.cpp | 62 +++---------------------- rudict/rudict/noun.cpp | 15 +----- rudict/rudict/noun.h | 4 +- rudict/rudict/other.cpp | 14 +----- rudict/rudict/other.h | 4 +- rudict/rudict/preposition.cpp | 16 +------ rudict/rudict/preposition.h | 4 +- rudict/rudict/verb.cpp | 16 +------ rudict/rudict/verb.h | 4 +- 14 files changed, 77 insertions(+), 140 deletions(-) diff --git a/rudict/frequent_nouns_2000.xlsx b/rudict/frequent_nouns_2000.xlsx index f6794d15219c1259a608a85a17e4c48b2712bf75..1623a6607830125cb139311317982609ce851d4e 100644 GIT binary patch delta 38833 zcmaHTd0dR^|2{foOX!56BFe`kONq3iO{1h{rlCcaHd7=OS|5806*9C(nVOk4N=d0W zr3md)BBHcSk#%$ zLT!zLk(#*I=Wft=LO$a~+J)X@KP2tWr4MqV2M6=wuFsep?f$mBR=MEy2kK<_#OUxg zZJ#k^EnglDYjn<2x?7KppGzN_jK4RZTO<6qcjwqPt+PKdw)VHY@h?=ZoU5YEg|CH^ zr4BEvncdq|*;A-?I;wwYzs%=VTKqkKRWZpP|Io?xZizPI z`Fl*?t{xxr?})`t4|kGOLi1YFtFeiK+?J(o_x8Gd&ZElMjJHJ%_e@O8S6Hd_bGqA{ zu4BUhN@87|&~8Xv40tJyUq~9#zwT!4-^aUL7SDF zG0ne+Hf~z`7Mm`S|FXj)q^FKIDDnE0hd_JzNhd-5- zek>-(zd0=ZnD5UMdn0}6Rj*eVH;ob!M3ub4s(Ru=dLAvRC@8DA=6OlM<~563qjNI< zVAw(BE0~GTh_mL~a)w8D+L{CEcS5v>_q~gZ3bSvw9gt0^-yZ3-m*!%o{<0%nIVDKsXp%CzqiEKLo2A62_RNv&#We@_p4uQAC-@Le)l|gv!^c{WZzTUa;nLe2ba`j zuwaj$JN;eM#>Q#kN!C2E1zvYo%UOPCoV6h*U>n6mE3J{9?Ctr!J*+#vcdL`n0kt>v zjQc!E8i5+TNp1LU*tPoyN8imN

io-CYxVfblx1v6aUhHf<@ZK0IV9w1@f1Ab7on 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 G!T3Lsej*0| delta 38777 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 diff --git a/rudict/rudict/adjective.cpp b/rudict/rudict/adjective.cpp index 017c887..20714ae 100644 --- a/rudict/rudict/adjective.cpp +++ b/rudict/rudict/adjective.cpp @@ -34,19 +34,7 @@ namespace AJ specialShortForm = lineArr[3]; - for (int i = 0; i < 3; i++) - { - TranslationUnit translationUnit; - - translationUnit.meaning = lineArr[4 + i * 3]; - translationUnit.comment = lineArr[4 + i * 3 + 1]; - translationUnit.example = lineArr[4 + i * 3 + 2]; - - if (translationUnit.meaning != L"") - { - translationUnitArr.push_back(translationUnit); - } - } + FillTranslationUnit(lineArr, 4); } diff --git a/rudict/rudict/adjective.h b/rudict/rudict/adjective.h index 5b93fa9..58e79f4 100644 --- a/rudict/rudict/adjective.h +++ b/rudict/rudict/adjective.h @@ -14,7 +14,7 @@ namespace AJ { - struct AdjectiveRecord + struct AdjectiveRecord : public TranslationUnitSetMix { std::wstring nominativeMaleForm; @@ -22,8 +22,6 @@ namespace AJ std::wstring specialShortForm; - std::vector translationUnitArr; - AdjectiveRecord(); AdjectiveRecord(std::wstring line); diff --git a/rudict/rudict/grammarCase.cpp b/rudict/rudict/grammarCase.cpp index fcb8ecd..15e6a94 100644 --- a/rudict/rudict/grammarCase.cpp +++ b/rudict/rudict/grammarCase.cpp @@ -2,6 +2,44 @@ #include + + //std::vector translationUnitArr; + +void TranslationUnitSetMix::FillTranslationUnit(const std::vector& lineArr, int startFrom) +{ + for (int i = 0; i < 3; i++) + { + TranslationUnit translationUnit; + + translationUnit.meaning = lineArr[startFrom + i * 3]; + translationUnit.comment = lineArr[startFrom + i * 3 + 1]; + translationUnit.example = lineArr[startFrom + i * 3 + 2]; + + if (translationUnit.meaning != L"") + { + translationUnitArr.push_back(translationUnit); + } + } +} + +boost::property_tree::wptree TranslationUnitSetMix::CreateTranslationPropertyTree() const +{ + boost::property_tree::wptree ptree; + + for (auto& translationUnit : translationUnitArr) + { + boost::property_tree::wptree translationUnitTree; + translationUnitTree.put(L"meaning", translationUnit.meaning); + translationUnitTree.put(L"comment", translationUnit.comment); + translationUnitTree.put(L"example", translationUnit.example); + + ptree.push_back(std::make_pair(L"", translationUnitTree)); + } + + return ptree; +} + + NounCount WStringToNounCount(std::wstring str) { if (str == L"NC_SINGULAR") diff --git a/rudict/rudict/grammarCase.h b/rudict/rudict/grammarCase.h index bcf8f3d..dbbf1b2 100644 --- a/rudict/rudict/grammarCase.h +++ b/rudict/rudict/grammarCase.h @@ -1,9 +1,15 @@ #ifndef GRAMMAR_CASE_H_INCLUDED #define GRAMMAR_CASE_H_INCLUDED +#include +#include +#include +#include +#include + +#include "boost/algorithm/string.hpp" +#include "boost/property_tree/ptree.hpp" -#include -#include enum NounGender { @@ -47,6 +53,18 @@ struct TranslationUnit std::wstring example; }; +class TranslationUnitSetMix +{ +protected: + std::vector translationUnitArr; + + void FillTranslationUnit(const std::vector& lineArr, int startFrom); + +public: + + boost::property_tree::wptree CreateTranslationPropertyTree() const; +}; + std::wstring NounCountToWString(NounCount nounCount); NounCount WStringToNounCount(std::wstring str); diff --git a/rudict/rudict/http/request_handler.cpp b/rudict/rudict/http/request_handler.cpp index 1a4a761..6074bdc 100644 --- a/rudict/rudict/http/request_handler.cpp +++ b/rudict/rudict/http/request_handler.cpp @@ -179,17 +179,7 @@ namespace http { nounTree.put(L"noun.nominativeSingularForm", nounStruct.nounRecord.nominativeForm); - boost::property_tree::wptree allTranslationsTree; - - for (auto& translationUnit : nounStruct.nounRecord.translationUnitArr) - { - boost::property_tree::wptree translationUnitTree; - translationUnitTree.put(L"meaning", translationUnit.meaning); - translationUnitTree.put(L"comment", translationUnit.comment); - translationUnitTree.put(L"example", translationUnit.example); - - allTranslationsTree.push_back(std::make_pair(L"", translationUnitTree)); - } + boost::property_tree::wptree allTranslationsTree = nounStruct.nounRecord.CreateTranslationPropertyTree(); nounTree.put_child(L"translations", allTranslationsTree); @@ -221,17 +211,7 @@ namespace http { adjectiveTree.put(L"adjective.nominativeSingularForm", adjectiveStruct.adjectiveRecord.nominativeMaleForm); - boost::property_tree::wptree allTranslationsTree; - - for (auto& translationUnit : adjectiveStruct.adjectiveRecord.translationUnitArr) - { - boost::property_tree::wptree translationUnitTree; - translationUnitTree.put(L"meaning", translationUnit.meaning); - translationUnitTree.put(L"comment", translationUnit.comment); - translationUnitTree.put(L"example", translationUnit.example); - - allTranslationsTree.push_back(std::make_pair(L"", translationUnitTree)); - } + boost::property_tree::wptree allTranslationsTree = adjectiveStruct.adjectiveRecord.CreateTranslationPropertyTree(); adjectiveTree.put_child(L"translations", allTranslationsTree); @@ -264,17 +244,7 @@ namespace http { verbTree.put(L"verb.verbParams", VB::VerbParamsToWString(verbStruct.verbParams)); - boost::property_tree::wptree allTranslationsTree; - - for (auto& translationUnit : verbStruct.verbRecord.translationUnitArr) - { - boost::property_tree::wptree translationUnitTree; - translationUnitTree.put(L"meaning", translationUnit.meaning); - translationUnitTree.put(L"comment", translationUnit.comment); - translationUnitTree.put(L"example", translationUnit.example); - - allTranslationsTree.push_back(std::make_pair(L"", translationUnitTree)); - } + boost::property_tree::wptree allTranslationsTree = verbStruct.verbRecord.CreateTranslationPropertyTree(); verbTree.put_child(L"translations", allTranslationsTree); @@ -300,18 +270,8 @@ namespace http { otherWordTree.put(L"otherWord.word", otherWordRecord.word); otherWordTree.put(L"otherWord.type", otherWordRecord.type); - boost::property_tree::wptree allTranslationsTree; - - for (auto& translationUnit : otherWordRecord.translationUnitArr) - { - boost::property_tree::wptree translationUnitTree; - translationUnitTree.put(L"meaning", translationUnit.meaning); - translationUnitTree.put(L"comment", translationUnit.comment); - translationUnitTree.put(L"example", translationUnit.example); - - allTranslationsTree.push_back(std::make_pair(L"", translationUnitTree)); - } - + boost::property_tree::wptree allTranslationsTree = otherWordRecord.CreateTranslationPropertyTree(); + otherWordTree.put_child(L"translations", allTranslationsTree); @@ -340,17 +300,7 @@ namespace http { prepositionTree.put(L"preposition.availableForInstrumental", prepositionStruct.availableForInstrumental); prepositionTree.put(L"preposition.availableForPrepositional", prepositionStruct.availableForPrepositional); - boost::property_tree::wptree allTranslationsTree; - - for (auto& translationUnit : prepositionStruct.translationUnitArr) - { - boost::property_tree::wptree translationUnitTree; - translationUnitTree.put(L"meaning", translationUnit.meaning); - translationUnitTree.put(L"comment", translationUnit.comment); - translationUnitTree.put(L"example", translationUnit.example); - - allTranslationsTree.push_back(std::make_pair(L"", translationUnitTree)); - } + boost::property_tree::wptree allTranslationsTree = prepositionStruct.CreateTranslationPropertyTree(); prepositionTree.put_child(L"translations", allTranslationsTree); diff --git a/rudict/rudict/noun.cpp b/rudict/rudict/noun.cpp index 8788b02..3a79919 100644 --- a/rudict/rudict/noun.cpp +++ b/rudict/rudict/noun.cpp @@ -66,19 +66,8 @@ NounRecord::NounRecord(std::wstring line) canBeAnimate = lineArr[10] == L"1" ? true : false; canBeInanimate = lineArr[11] == L"1" ? true : false; - for (int i = 0; i < 3; i++) - { - TranslationUnit translationUnit; - - translationUnit.meaning = lineArr[12 + i * 3]; - translationUnit.comment = lineArr[12 + i * 3 + 1]; - translationUnit.example = lineArr[12 + i * 3 + 2]; - - if (translationUnit.meaning != L"") - { - translationUnitArr.push_back(translationUnit); - } - } + FillTranslationUnit(lineArr, 12); + } diff --git a/rudict/rudict/noun.h b/rudict/rudict/noun.h index eb88299..36a0ef1 100644 --- a/rudict/rudict/noun.h +++ b/rudict/rudict/noun.h @@ -14,7 +14,7 @@ namespace NN { - struct NounRecord + struct NounRecord : public TranslationUnitSetMix { std::wstring nominativeForm; NounGender gender; @@ -35,8 +35,6 @@ namespace NN std::set precalculatedNominativePluralSet; - std::vector translationUnitArr; - NounRecord(); NounRecord(std::wstring line); diff --git a/rudict/rudict/other.cpp b/rudict/rudict/other.cpp index 471e68d..093a684 100644 --- a/rudict/rudict/other.cpp +++ b/rudict/rudict/other.cpp @@ -26,19 +26,7 @@ namespace OT word = lineArr[1]; type = lineArr[2]; - for (int i = 0; i < 3; i++) - { - TranslationUnit translationUnit; - - translationUnit.meaning = lineArr[3 + i * 3]; - translationUnit.comment = lineArr[3 + i * 3 + 1]; - translationUnit.example = lineArr[3 + i * 3 + 2]; - - if (translationUnit.meaning != L"") - { - translationUnitArr.push_back(translationUnit); - } - } + FillTranslationUnit(lineArr, 3); } diff --git a/rudict/rudict/other.h b/rudict/rudict/other.h index a748a69..89f43dc 100644 --- a/rudict/rudict/other.h +++ b/rudict/rudict/other.h @@ -15,13 +15,11 @@ namespace OT { - struct OtherWordRecord + struct OtherWordRecord : public TranslationUnitSetMix { std::wstring word; std::wstring type; - std::vector translationUnitArr; - OtherWordRecord(); OtherWordRecord(std::wstring line); diff --git a/rudict/rudict/preposition.cpp b/rudict/rudict/preposition.cpp index dc254a3..4ffb7bf 100644 --- a/rudict/rudict/preposition.cpp +++ b/rudict/rudict/preposition.cpp @@ -36,20 +36,8 @@ namespace PP availableForInstrumental = lineArr[5] == L"1" ? true : false; availableForPrepositional = lineArr[6] == L"1" ? true : false; - for (int i = 0; i < 3; i++) - { - TranslationUnit translationUnit; - - translationUnit.meaning = lineArr[7 + i * 3]; - translationUnit.comment = lineArr[7 + i * 3 + 1]; - translationUnit.example = lineArr[7 + i * 3 + 2]; - - if (translationUnit.meaning != L"") - { - translationUnitArr.push_back(translationUnit); - } - } - + FillTranslationUnit(lineArr, 7); + } diff --git a/rudict/rudict/preposition.h b/rudict/rudict/preposition.h index 5bfcf72..b0296b6 100644 --- a/rudict/rudict/preposition.h +++ b/rudict/rudict/preposition.h @@ -15,7 +15,7 @@ namespace PP { - struct PrepositionRecord + struct PrepositionRecord : public TranslationUnitSetMix { std::wstring word; @@ -25,8 +25,6 @@ namespace PP bool availableForInstrumental; bool availableForPrepositional; - std::vector translationUnitArr; - PrepositionRecord(); PrepositionRecord(std::wstring line); diff --git a/rudict/rudict/verb.cpp b/rudict/rudict/verb.cpp index 204ffae..03ce242 100644 --- a/rudict/rudict/verb.cpp +++ b/rudict/rudict/verb.cpp @@ -39,20 +39,8 @@ namespace VB canBePerfect = lineArr[4] == L"1" ? true : false; canBeImperfect = lineArr[5] == L"1" ? true : false; - for (int i = 0; i < 3; i++) - { - TranslationUnit translationUnit; - - translationUnit.meaning = lineArr[6 + i * 3]; - translationUnit.comment = lineArr[6 + i * 3 + 1]; - translationUnit.example = lineArr[6 + i * 3 + 2]; - - if (translationUnit.meaning != L"") - { - translationUnitArr.push_back(translationUnit); - } - } - + FillTranslationUnit(lineArr, 6); + } diff --git a/rudict/rudict/verb.h b/rudict/rudict/verb.h index 85654bf..cb7347b 100644 --- a/rudict/rudict/verb.h +++ b/rudict/rudict/verb.h @@ -13,7 +13,7 @@ namespace VB { - struct VerbRecord + struct VerbRecord : public TranslationUnitSetMix { std::wstring infinitive; bool canBePrefixed; @@ -21,8 +21,6 @@ namespace VB bool canBePerfect; bool canBeImperfect; - std::vector translationUnitArr; - VerbRecord(); VerbRecord(std::wstring line);