From 77decb26c498fadbe02e02dc3d7c016c48fa4820 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sat, 19 Feb 2022 13:24:24 +0000 Subject: [PATCH] Move PluginMetadata::GetSimpleMessages() to ToSimpleMessages() It's more versatile and would avoid duplication in LOOT's code. --- include/loot/metadata/message.h | 13 ++++++++++ include/loot/metadata/plugin_metadata.h | 9 ------- src/api/metadata/message.cpp | 15 +++++++++++ src/api/metadata/plugin_metadata.cpp | 14 ---------- .../internals/metadata/plugin_metadata_test.h | 26 ------------------- 5 files changed, 28 insertions(+), 49 deletions(-) diff --git a/include/loot/metadata/message.h b/include/loot/metadata/message.h index 37e245ff..0ce0a463 100644 --- a/include/loot/metadata/message.h +++ b/include/loot/metadata/message.h @@ -154,6 +154,19 @@ LOOT_API bool operator>=(const Message& lhs, const Message& rhs); LOOT_API std::optional ToSimpleMessage( const Message& message, const std::string& language); + +/** + * Get the messages as SimpleMessages given a language. + * @param language + * The preferred language for the message content. + * @return A vector of SimpleMessage objects for the preferred language, or for + * English if message text is not available for the given language. The + * order of the input Message objects is preserved, though any messages + * without the preferred language or English content will be omitted. + */ +LOOT_API std::vector ToSimpleMessages( + const std::vector& message, + const std::string& language); } #endif diff --git a/include/loot/metadata/plugin_metadata.h b/include/loot/metadata/plugin_metadata.h index 45a6e3fd..b346205e 100644 --- a/include/loot/metadata/plugin_metadata.h +++ b/include/loot/metadata/plugin_metadata.h @@ -144,15 +144,6 @@ public: */ LOOT_API std::vector GetLocations() const; - /** - * Get the plugin's messages as SimpleMessage objects for the given language. - * @param language - * The language to create the SimpleMessage objects for. - * @return The plugin's messages as SimpleMessage objects. - */ - LOOT_API std::vector GetSimpleMessages( - const std::string& language) const; - /** * Set the plugin's group. * @param group diff --git a/src/api/metadata/message.cpp b/src/api/metadata/message.cpp index 981dd301..fca27e5d 100644 --- a/src/api/metadata/message.cpp +++ b/src/api/metadata/message.cpp @@ -114,4 +114,19 @@ std::optional ToSimpleMessage(const Message& message, return simpleMessage; } + +std::vector ToSimpleMessages( + const std::vector& messages, + const std::string& language) { + std::vector simpleMessages; + + for (const auto& message : messages) { + auto simpleMessage = ToSimpleMessage(message, language); + if (simpleMessage.has_value()) { + simpleMessages.push_back(simpleMessage.value()); + } + } + + return simpleMessages; +} } diff --git a/src/api/metadata/plugin_metadata.cpp b/src/api/metadata/plugin_metadata.cpp index 0a5d1d2d..90f9cf32 100644 --- a/src/api/metadata/plugin_metadata.cpp +++ b/src/api/metadata/plugin_metadata.cpp @@ -145,20 +145,6 @@ std::vector PluginMetadata::GetLocations() const { return locations_; } -std::vector PluginMetadata::GetSimpleMessages( - const std::string& language) const { - std::vector simpleMessages; - - for (auto message : messages_) { - auto simpleMessage = message.ToSimpleMessage(language); - if (simpleMessage.has_value()) { - simpleMessages.push_back(simpleMessage.value()); - } - } - - return simpleMessages; -} - void PluginMetadata::SetGroup(const std::string& group) { group_ = group; } void PluginMetadata::UnsetGroup() { group_ = std::nullopt; } diff --git a/src/tests/api/internals/metadata/plugin_metadata_test.h b/src/tests/api/internals/metadata/plugin_metadata_test.h index a00d39fa..36e318b2 100644 --- a/src/tests/api/internals/metadata/plugin_metadata_test.h +++ b/src/tests/api/internals/metadata/plugin_metadata_test.h @@ -424,32 +424,6 @@ TEST_P(PluginMetadataTest, EXPECT_EQ(std::vector({location2}), newMetadata.GetLocations()); } -TEST_P(PluginMetadataTest, simpleMessagesShouldReturnMessagesAsSimpleMessages) { - PluginMetadata plugin; - plugin.SetMessages({ - Message(MessageType::say, "content1"), - Message(MessageType::warn, - std::vector( - {MessageContent("content2", french), - MessageContent("other content2", - MessageContent::DEFAULT_LANGUAGE)})), - Message(MessageType::error, "content3"), - }); - - auto simpleMessages = plugin.GetSimpleMessages(french); - - EXPECT_EQ(3, simpleMessages.size()); - EXPECT_EQ(MessageType::say, simpleMessages.front().type); - EXPECT_EQ(MessageContent::DEFAULT_LANGUAGE, simpleMessages.front().language); - EXPECT_EQ("content1", simpleMessages.front().text); - EXPECT_EQ(MessageType::warn, (++simpleMessages.begin())->type); - EXPECT_EQ(french, (++simpleMessages.begin())->language); - EXPECT_EQ("content2", (++simpleMessages.begin())->text); - EXPECT_EQ(MessageType::error, simpleMessages.back().type); - EXPECT_EQ(MessageContent::DEFAULT_LANGUAGE, simpleMessages.back().language); - EXPECT_EQ("content3", simpleMessages.back().text); -} - TEST_P(PluginMetadataTest, unsetGroupShouldLeaveNoGroupValueSet) { PluginMetadata plugin; EXPECT_FALSE(plugin.GetGroup().has_value());