Move PluginMetadata::GetSimpleMessages() to ToSimpleMessages()

It's more versatile and would avoid duplication in LOOT's code.
This commit is contained in:
Oliver Hamlet
2022-02-19 13:45:52 +00:00
parent 5bce0b9e06
commit 77decb26c4
5 changed files with 28 additions and 49 deletions
+13
View File
@@ -154,6 +154,19 @@ LOOT_API bool operator>=(const Message& lhs, const Message& rhs);
LOOT_API std::optional<SimpleMessage> 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<SimpleMessage> ToSimpleMessages(
const std::vector<Message>& message,
const std::string& language);
}
#endif
-9
View File
@@ -144,15 +144,6 @@ public:
*/
LOOT_API std::vector<Location> 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<SimpleMessage> GetSimpleMessages(
const std::string& language) const;
/**
* Set the plugin's group.
* @param group
+15
View File
@@ -114,4 +114,19 @@ std::optional<SimpleMessage> ToSimpleMessage(const Message& message,
return simpleMessage;
}
std::vector<SimpleMessage> ToSimpleMessages(
const std::vector<Message>& messages,
const std::string& language) {
std::vector<SimpleMessage> simpleMessages;
for (const auto& message : messages) {
auto simpleMessage = ToSimpleMessage(message, language);
if (simpleMessage.has_value()) {
simpleMessages.push_back(simpleMessage.value());
}
}
return simpleMessages;
}
}
-14
View File
@@ -145,20 +145,6 @@ std::vector<Location> PluginMetadata::GetLocations() const {
return locations_;
}
std::vector<SimpleMessage> PluginMetadata::GetSimpleMessages(
const std::string& language) const {
std::vector<SimpleMessage> 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; }
@@ -424,32 +424,6 @@ TEST_P(PluginMetadataTest,
EXPECT_EQ(std::vector<Location>({location2}), newMetadata.GetLocations());
}
TEST_P(PluginMetadataTest, simpleMessagesShouldReturnMessagesAsSimpleMessages) {
PluginMetadata plugin;
plugin.SetMessages({
Message(MessageType::say, "content1"),
Message(MessageType::warn,
std::vector<MessageContent>(
{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());