mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Add language field to PluginMessage
The language selected is not always the language asked for, so this could be useful for checking.
This commit is contained in:
@@ -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).
|
||||
|
||||
@@ -169,18 +169,12 @@ std::vector<PluginMessage> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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_;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user