From 5cc6a81016a2a0c5d9568f8d6f5521a01c5a36b2 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Fri, 19 Aug 2016 23:18:58 +0100 Subject: [PATCH] Add language field to PluginMessage The language selected is not always the language asked for, so this could be useful for checking. --- include/loot/plugin_message.h | 3 +++ src/api/api_database.cpp | 20 ++++++++++++-------- src/api/api_database.h | 2 ++ src/tests/api/database_interface_test.h | 6 ++++++ 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/include/loot/plugin_message.h b/include/loot/plugin_message.h index bf7df06a..d0c5f85c 100644 --- a/include/loot/plugin_message.h +++ b/include/loot/plugin_message.h @@ -37,6 +37,9 @@ struct PluginMessage { /** @brief The type of the message. */ MessageType type; + /** @brief The language the message string is written in. */ + LanguageCode language; + /** * @brief The message string, which may be formatted using * [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown). diff --git a/src/api/api_database.cpp b/src/api/api_database.cpp index 70c7ec20..6e2706f6 100644 --- a/src/api/api_database.cpp +++ b/src/api/api_database.cpp @@ -169,18 +169,12 @@ std::vector ApiDatabase::GetPluginMessages(const std::string& plu PluginMetadata pluginMetadata = game_.GetMasterlist().FindPlugin(PluginMetadata(plugin)); for (const auto& message : pluginMetadata.Messages()) { - PluginMessage pluginMessage; - pluginMessage.type = message.GetType(); - pluginMessage.text = message.GetContent(language).GetText(); - messages.push_back(pluginMessage); + messages.push_back(convertMessage(message, language)); } pluginMetadata = game_.GetUserlist().FindPlugin(PluginMetadata(plugin)); for (const auto& message : pluginMetadata.Messages()) { - PluginMessage pluginMessage; - pluginMessage.type = message.GetType(); - pluginMessage.text = message.GetContent(language).GetText(); - messages.push_back(pluginMessage); + messages.push_back(convertMessage(message, language)); } return messages; @@ -249,4 +243,14 @@ void ApiDatabase::WriteMinimalList(const std::string& outputFile, const bool ove out << yout.c_str(); out.close(); } +PluginMessage ApiDatabase::convertMessage(const Message& message, const LanguageCode language) { + PluginMessage pluginMessage; + MessageContent content = message.GetContent(language); + + pluginMessage.type = message.GetType(); + pluginMessage.language = content.GetLanguage(); + pluginMessage.text = content.GetText(); + + return pluginMessage; +} } diff --git a/src/api/api_database.h b/src/api/api_database.h index 5445268d..e278b5c2 100644 --- a/src/api/api_database.h +++ b/src/api/api_database.h @@ -62,6 +62,8 @@ struct ApiDatabase : public DatabaseInterface { void WriteMinimalList(const std::string& outputFile, const bool overwrite); private: + PluginMessage convertMessage(const Message& message, const LanguageCode language); + Game game_; Masterlist unevaluatedMasterlist_; diff --git a/src/tests/api/database_interface_test.h b/src/tests/api/database_interface_test.h index 09c08828..0c536a9f 100644 --- a/src/tests/api/database_interface_test.h +++ b/src/tests/api/database_interface_test.h @@ -362,6 +362,7 @@ TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputANoteIfAPl EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankEsm, LanguageCode::english)); ASSERT_EQ(1, messages.size()); EXPECT_EQ(MessageType::say, messages[0].type); + EXPECT_EQ(LanguageCode::english, messages[0].language); EXPECT_EQ(noteMessage, messages[0].text); } @@ -373,6 +374,7 @@ TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputAWarningIf EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankDifferentEsm, LanguageCode::english)); ASSERT_EQ(1, messages.size()); EXPECT_EQ(MessageType::warn, messages[0].type); + EXPECT_EQ(LanguageCode::english, messages[0].language); EXPECT_EQ(warningMessage, messages[0].text); } @@ -384,6 +386,7 @@ TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputAnErrorIfA EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankDifferentEsp, LanguageCode::english)); ASSERT_EQ(1, messages.size()); EXPECT_EQ(MessageType::error, messages[0].type); + EXPECT_EQ(LanguageCode::english, messages[0].language); EXPECT_EQ(errorMessage, messages[0].text); } @@ -395,10 +398,13 @@ TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputMultipleMe EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankDifferentMasterDependentEsp, LanguageCode::english)); ASSERT_EQ(3, messages.size()); EXPECT_EQ(MessageType::say, messages[0].type); + EXPECT_EQ(LanguageCode::english, messages[0].language); EXPECT_EQ(noteMessage, messages[0].text); EXPECT_EQ(MessageType::warn, messages[1].type); + EXPECT_EQ(LanguageCode::english, messages[1].language); EXPECT_EQ(warningMessage, messages[1].text); EXPECT_EQ(MessageType::error, messages[2].type); + EXPECT_EQ(LanguageCode::english, messages[2].language); EXPECT_EQ(errorMessage, messages[2].text); }