Fix textprocessor testing and bump version
This commit is contained in:
parent
a210de14ff
commit
6ddd6389bd
|
@ -1,3 +1,7 @@
|
||||||
|
14.06.2024 Экстеор 4.9.3
|
||||||
|
• Грамматика: разрешено использование одного аргумента для мультифильтра - Fi1,2[X1*X1](S1)
|
||||||
|
• исправлена ошибка, приводившая к некорректному вычислению типизаций рекурсии с пустым множеством
|
||||||
|
• использование cctext без встраивания кода (через pip)
|
||||||
13.05.2024 Экстеор 4.9.2
|
13.05.2024 Экстеор 4.9.2
|
||||||
• Грамматика: разрешено использование пустого множества как литерала с типизацией B(R0)
|
• Грамматика: разрешено использование пустого множества как литерала с типизацией B(R0)
|
||||||
• Грамматика: разрешено объявление кортежем в императивных блоках
|
• Грамматика: разрешено объявление кортежем в императивных блоках
|
||||||
|
|
|
@ -1182,8 +1182,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 4,9,2,1000
|
FILEVERSION 4,9,3,1000
|
||||||
PRODUCTVERSION 4,9,2,1000
|
PRODUCTVERSION 4,9,3,1000
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -1201,13 +1201,13 @@ BEGIN
|
||||||
VALUE "Comments", "Ýêñïëèêàòîð òåîðèé "
|
VALUE "Comments", "Ýêñïëèêàòîð òåîðèé "
|
||||||
VALUE "CompanyName", "ÍÏ ÖÈÂÒ ÊÎÍÖÅÏÒ"
|
VALUE "CompanyName", "ÍÏ ÖÈÂÒ ÊÎÍÖÅÏÒ"
|
||||||
VALUE "FileDescription", "Ýêñòåîð 4.9"
|
VALUE "FileDescription", "Ýêñòåîð 4.9"
|
||||||
VALUE "FileVersion", "4.9.2.1000"
|
VALUE "FileVersion", "4.9.3.1000"
|
||||||
VALUE "InternalName", "Ýêñòåîð 4.9"
|
VALUE "InternalName", "Ýêñòåîð 4.9"
|
||||||
VALUE "LegalCopyright", "Copyright © NPMP CIHT CONCEPT 1994-2024"
|
VALUE "LegalCopyright", "Copyright © NPMP CIHT CONCEPT 1994-2024"
|
||||||
VALUE "LegalTrademarks", "Ýêñòåîð™"
|
VALUE "LegalTrademarks", "Ýêñòåîð™"
|
||||||
VALUE "OriginalFilename", "Exteor.exe"
|
VALUE "OriginalFilename", "Exteor.exe"
|
||||||
VALUE "ProductName", "Ýêñòåîð 4.9"
|
VALUE "ProductName", "Ýêñòåîð 4.9"
|
||||||
VALUE "ProductVersion", "4.9.2.1000"
|
VALUE "ProductVersion", "4.9.3.1000"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -14,8 +14,10 @@ public:
|
||||||
|
|
||||||
[[nodiscard]] std::string Inflect(const std::string& target, const ccl::lang::Morphology& form) const override;
|
[[nodiscard]] std::string Inflect(const std::string& target, const ccl::lang::Morphology& form) const override;
|
||||||
[[nodiscard]] std::string InflectDependant(const std::string& dependant, const std::string& main) const override;
|
[[nodiscard]] std::string InflectDependant(const std::string& dependant, const std::string& main) const override;
|
||||||
[[nodiscard]] bool IsSubstr(const std::string& needle,
|
[[nodiscard]] bool IsSubstr(
|
||||||
const std::string& haystack) const override;
|
const std::string& needle,
|
||||||
|
const std::string& haystack
|
||||||
|
) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xtr::core
|
} // namespace xtr::core
|
|
@ -151,26 +151,35 @@ void PyCore::Stop() noexcept {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PyCore::LoadModule(const std::string& moduleName, const std::string& pyFileName) {
|
bool PyCore::LoadModule(const std::string& moduleName, const std::string& pyImport) {
|
||||||
if (!IsRunning()) {
|
if (!IsRunning()) {
|
||||||
return false;
|
return false;
|
||||||
} else if (moduleName.empty()) {
|
} else if (moduleName.empty()) {
|
||||||
return false;
|
return false;
|
||||||
} else if (modules.contains(moduleName)) {
|
} else if (modules.contains(moduleName)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (auto nameObj = Object::FromNew(PyUnicode_FromString(pyFileName.c_str()));
|
}
|
||||||
nameObj == nullptr) {
|
|
||||||
|
auto nameObj = Object::FromNew(PyUnicode_FromString(pyImport.c_str()));
|
||||||
|
if (nameObj == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
} else if (auto moduleObj = Object::FromNew(PyImport_Import(nameObj.get()));
|
|
||||||
moduleObj == nullptr) {
|
|
||||||
return false;
|
|
||||||
} else if (auto dictionaryObj = Object::FromBorrowed(PyModule_GetDict(moduleObj.get()));
|
|
||||||
dictionaryObj == nullptr) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
modules.insert(std::pair(moduleName, Module{ .pyModule = moduleObj, .pyDictionary = std::move(dictionaryObj) }));
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto moduleObj = Object::FromNew(PyImport_Import(nameObj.get()));
|
||||||
|
if (moduleObj == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto dictionaryObj = Object::FromBorrowed(PyModule_GetDict(moduleObj.get()));
|
||||||
|
if (dictionaryObj == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
modules.insert(std::pair(
|
||||||
|
moduleName,
|
||||||
|
Module{ .pyModule = moduleObj, .pyDictionary = std::move(dictionaryObj) }
|
||||||
|
));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Callable PyCore::PyFunction(const std::string& moduleName, const std::string& funcName) const {
|
Callable PyCore::PyFunction(const std::string& moduleName, const std::string& funcName) const {
|
||||||
|
|
|
@ -20,8 +20,9 @@ protected:
|
||||||
std::unique_ptr<PyTextProcessor> processor{ nullptr };
|
std::unique_ptr<PyTextProcessor> processor{ nullptr };
|
||||||
|
|
||||||
void SetUp() override {
|
void SetUp() override {
|
||||||
ASSERT_TRUE(python.Start());
|
static CString path{ "C:\\Program Files\\Python312\\" };
|
||||||
python.LoadModule("cctext", "cctext");
|
ASSERT_TRUE(python.Start(path));
|
||||||
|
ASSERT_TRUE(python.LoadModule("cctext", "cctext"));
|
||||||
processor = std::make_unique<PyTextProcessor>();
|
processor = std::make_unique<PyTextProcessor>();
|
||||||
processor->InitModule("cctext");
|
processor->InitModule("cctext");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user