mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Move PluginMetadata::GetSimpleMessages() to ToSimpleMessages()
It's more versatile and would avoid duplication in LOOT's code.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user