From d456220006495bd24665a20280564ff0472e8902 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Fri, 30 Aug 2024 18:27:52 +0300 Subject: [PATCH] F: Improve old reference loading --- distr/app/UpdateLog.txt | 2 + include/Exteor.RC | 8 ++-- src/io/TRSLegacyLoader.cpp | 60 +++++++++++++++++++++--- test/Data/Model/TestCalculate.rsm | Bin 0 -> 8836 bytes test/Data/Тест_Модели/TestCalculate.rsm | Bin 43310 -> 0 bytes test/src/testDocuments.cpp | 2 +- 6 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 test/Data/Model/TestCalculate.rsm delete mode 100644 test/Data/Тест_Модели/TestCalculate.rsm diff --git a/distr/app/UpdateLog.txt b/distr/app/UpdateLog.txt index c51f691..2cdfaf2 100644 --- a/distr/app/UpdateLog.txt +++ b/distr/app/UpdateLog.txt @@ -1,3 +1,5 @@ +30.08.2024 Экстеор 4.9.4 +• исправлена загрузка файлов версий 2017-2020 годов 14.06.2024 Экстеор 4.9.3 • Грамматика: разрешено использование одного аргумента для мультифильтра - Fi1,2[X1*X1](S1) • исправлена ошибка, приводившая к некорректному вычислению типизаций рекурсии с пустым множеством diff --git a/include/Exteor.RC b/include/Exteor.RC index 18c1902..5714b63 100644 --- a/include/Exteor.RC +++ b/include/Exteor.RC @@ -1182,8 +1182,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 4,9,3,1000 - PRODUCTVERSION 4,9,3,1000 + FILEVERSION 4,9,4,1000 + PRODUCTVERSION 4,9,4,1000 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -1201,13 +1201,13 @@ BEGIN VALUE "Comments", " " VALUE "CompanyName", " " VALUE "FileDescription", " 4.9" - VALUE "FileVersion", "4.9.3.1000" + VALUE "FileVersion", "4.9.4.1000" VALUE "InternalName", " 4.9" VALUE "LegalCopyright", "Copyright NPMP CIHT CONCEPT 1994-2024" VALUE "LegalTrademarks", "" VALUE "OriginalFilename", "Exteor.exe" VALUE "ProductName", " 4.9" - VALUE "ProductVersion", "4.9.3.1000" + VALUE "ProductVersion", "4.9.4.1000" END END BLOCK "VarFileInfo" diff --git a/src/io/TRSLegacyLoader.cpp b/src/io/TRSLegacyLoader.cpp index 5d23594..bc3991b 100644 --- a/src/io/TRSLegacyLoader.cpp +++ b/src/io/TRSLegacyLoader.cpp @@ -4,6 +4,11 @@ #include "xtr/core/Encoder.h" +#include +#include +#include +#include + using ccl::semantic::ConceptRecord; using ccl::semantic::CstType; using ccl::lang::ManagedText; @@ -11,6 +16,40 @@ using ccl::lang::LexicalTerm; namespace xtr::io { +namespace details { + static void FixOldReferences(std::string& target) { + static const std::regex referencePattern(R"(\@\{([A-Z]\d+)\|([A-Z]+)\|([A-Z]+)\|\d+\})"); + std::vector> replacements{}; + std::sregex_iterator iter(target.begin(), target.end(), referencePattern); + std::sregex_iterator end{}; + while (iter != end) { + std::smatch match = *iter; + + std::string part1 = match[1].str(); // e.g., "D4" + std::string part2 = match[2].str(); // e.g., "ABLT" + std::string part3 = match[3].str(); // e.g., "PLUR" + + std::transform(part2.begin(), part2.end(), part2.begin(), + [](unsigned char c) { return static_cast(std::tolower(c)); }); + std::transform(part3.begin(), part3.end(), part3.begin(), + [](unsigned char c) { return static_cast(std::tolower(c)); }); + + std::string newReference = "@{" + part1 + "|" + part2 + "," + part3 + "}"; + + replacements.emplace_back(match.str(), newReference); + + iter++; + } + for (const auto& [oldRef, newRef] : replacements) { + size_t pos = 0; + while ((pos = target.find(oldRef, pos)) != std::string::npos) { + target.replace(pos, oldRef.length(), newRef); + pos += newRef.length(); + } + } + } +} + void LegacyCstLoader::LoadBasicProperties(BOOL oldType) { const auto sName = ar.Load(); auto sComment = ar.Load(); @@ -73,11 +112,14 @@ void LegacyCstLoader::LoadTerms(const BOOL hasTerms, const BOOL multipleTerms) { termRefs.at(0) = terms.at(0); } - cst->term = LexicalTerm{ mfc::ToSTL(termRefs.at(0)), mfc::ToSTL(terms.at(0)) }; + auto termRaw = mfc::ToSTL(termRefs.at(0)); + details::FixOldReferences(termRaw); + cst->term = LexicalTerm{ termRaw, mfc::ToSTL(terms.at(0)) }; for (uint8_t j = 0; j < size(TERM_FORMS); ++j) { - const auto formText = mfc::ToSTL(termForms.at(0).at(j)); - if (!formText.empty()) { - cst->term.SetForm(TERM_FORMS.at(j), formText); + auto manualForm = mfc::ToSTL(termForms.at(0).at(j)); + if (!manualForm.empty()) { + details::FixOldReferences(manualForm); + cst->term.SetForm(TERM_FORMS.at(j), manualForm); } } } @@ -91,7 +133,9 @@ void LegacyCstLoader::LoadInterpretation(const BOOL loadWithRef) { if (needEncoding) { encode::EncodeToUnicode(sInterpretation); } - cst->definition = ManagedText{ mfc::ToSTL(sInterpretationRef), mfc::ToSTL(sInterpretation) }; + auto interpretationRaw = mfc::ToSTL(sInterpretationRef); + details::FixOldReferences(interpretationRaw); + cst->definition = ManagedText{ interpretationRaw, mfc::ToSTL(sInterpretation) }; } void LegacyCstLoader::LoadID() { @@ -120,7 +164,8 @@ void LegacyCoreLoader::DoLoad(ccl::semantic::RSCore& core) { } ccl::lang::ManagedText LegacyCoreLoader::LoadText() { - const auto rawText = ar.Load(); + auto rawText = ar.Load(); + details::FixOldReferences(rawText); const auto cache = ar.Load(); return ccl::lang::ManagedText{ rawText, cache }; } @@ -129,8 +174,9 @@ ccl::lang::LexicalTerm LegacyCoreLoader::LoadTerm() { using ccl::lang::TERM_FORMS; ccl::lang::LexicalTerm term{ LoadText() }; for (uint8_t j = 0; j < size(TERM_FORMS); ++j) { - const auto manualForm = ar.Load(); + auto manualForm = ar.Load(); if (!std::empty(manualForm)) { + details::FixOldReferences(manualForm); term.SetForm(TERM_FORMS.at(j), manualForm); } } diff --git a/test/Data/Model/TestCalculate.rsm b/test/Data/Model/TestCalculate.rsm new file mode 100644 index 0000000000000000000000000000000000000000..ab4fb8ced82f4bf7de070ca67c9574b2cd303c0d GIT binary patch literal 8836 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 P?~QiW;5UZ@tw8*Lpz&|F diff --git a/test/src/testDocuments.cpp b/test/src/testDocuments.cpp index 5f38f4f..b86ec12 100644 --- a/test/src/testDocuments.cpp +++ b/test/src/testDocuments.cpp @@ -152,7 +152,7 @@ TEST_F(UTDocuments, RSModelSaveLoad) { TEST_F(UTDocuments, RSModelCalculate) { MockRSModelDoc document{}; - const auto filePath = ::LocalPathToGlobal(LR"(Data\Тест_Модели\TestCalculate.rsm)"); + const auto filePath = ::LocalPathToGlobal(LR"(Data\Model\TestCalculate.rsm)"); ASSERT_TRUE(document.LoadFrom(filePath)); document.model->Calculations().RecalculateAll(); EXPECT_EQ(document.model->Calculations().Count(ccl::semantic::EvalStatus::AXIOM_FAIL), 0U);