summaryrefslogtreecommitdiff
path: root/src/localization
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2024-05-18 14:48:12 +0500
committerilotterytea <iltsu@alright.party>2024-05-18 14:48:12 +0500
commitd1793df1eda463b10107d41785ad1d7f055ed476 (patch)
treefd3e41c3b4a05924748ae4b762e1ae55a0bc815c /src/localization
parentd7a2de17e9b7931f68b5b4079b1c36866a19d343 (diff)
upd: moved the bot part to a relative subfolder
Diffstat (limited to 'src/localization')
-rw-r--r--src/localization/line_id.cpp100
-rw-r--r--src/localization/line_id.hpp56
-rw-r--r--src/localization/localization.cpp132
-rw-r--r--src/localization/localization.hpp37
4 files changed, 0 insertions, 325 deletions
diff --git a/src/localization/line_id.cpp b/src/localization/line_id.cpp
deleted file mode 100644
index 567a3ba..0000000
--- a/src/localization/line_id.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-#include "line_id.hpp"
-
-#include <optional>
-#include <string>
-
-namespace bot {
- namespace loc {
- std::optional<LineId> string_to_line_id(const std::string &str) {
- if (str == "ping.response") {
- return LineId::PingResponse;
- }
-
- else if (str == "msg.owner") {
- return LineId::MsgOwner;
- }
-
- else if (str == "argument.subcommand") {
- return LineId::ArgumentSubcommand;
- } else if (str == "argument.message") {
- return LineId::ArgumentMessage;
- } else if (str == "argument.interval") {
- return LineId::ArgumentInterval;
- } else if (str == "argument.name") {
- return LineId::ArgumentName;
- } else if (str == "argument.target") {
- return LineId::ArgumentTarget;
- } else if (str == "argument.value") {
- return LineId::ArgumentValue;
- } else if (str == "argument.amount") {
- return LineId::ArgumentAmount;
- }
-
- else if (str == "error.template") {
- return LineId::ErrorTemplate;
- } else if (str == "error.not_enough_arguments") {
- return LineId::ErrorNotEnoughArguments;
- } else if (str == "error.incorrect_argument") {
- return LineId::ErrorIncorrectArgument;
- } else if (str == "error.incompatible_name") {
- return LineId::ErrorIncompatibleName;
- } else if (str == "error.namesake_creation") {
- return LineId::ErrorNamesakeCreation;
- } else if (str == "error.not_found") {
- return LineId::ErrorNotFound;
- } else if (str == "error.something_went_wrong") {
- return LineId::ErrorSomethingWentWrong;
- } else if (str == "error.insufficient_rights") {
- return LineId::ErrorInsufficientRights;
- } else if (str == "error.illegal_command") {
- return LineId::ErrorIllegalCommand;
- }
-
- else if (str == "event.on") {
- return LineId::EventOn;
- } else if (str == "event.off") {
- return LineId::EventOff;
- }
-
- else if (str == "notify.sub") {
- return LineId::NotifySub;
- } else if (str == "notify.unsub") {
- return LineId::NotifyUnsub;
- }
-
- else if (str == "join.response") {
- return LineId::JoinResponse;
- } else if (str == "join.response_in_chat") {
- return LineId::JoinResponseInChat;
- } else if (str == "join.already_in") {
- return LineId::JoinAlreadyIn;
- } else if (str == "join.rejoined") {
- return LineId::JoinRejoined;
- } else if (str == "join.from_other_chat") {
- return LineId::JoinFromOtherChat;
- } else if (str == "join.not_allowed") {
- return LineId::JoinNotAllowed;
- }
-
- else if (str == "custom_command.new") {
- return LineId::CustomcommandNew;
- } else if (str == "custom_command.delete") {
- return LineId::CustomcommandDelete;
- }
-
- else if (str == "timer.new") {
- return LineId::TimerNew;
- } else if (str == "timer.delete") {
- return LineId::TimerDelete;
- }
-
- else if (str == "help.response") {
- return LineId::HelpResponse;
- }
-
- else {
- return std::nullopt;
- }
- }
- }
-}
diff --git a/src/localization/line_id.hpp b/src/localization/line_id.hpp
deleted file mode 100644
index 41ceec6..0000000
--- a/src/localization/line_id.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-#pragma once
-
-#include <optional>
-#include <string>
-
-namespace bot {
- namespace loc {
- enum LineId {
- MsgOwner,
-
- ArgumentSubcommand,
- ArgumentMessage,
- ArgumentInterval,
- ArgumentName,
- ArgumentTarget,
- ArgumentValue,
- ArgumentAmount,
-
- ErrorTemplate,
- ErrorNotEnoughArguments,
- ErrorIncorrectArgument,
- ErrorIncompatibleName,
- ErrorNamesakeCreation,
- ErrorNotFound,
- ErrorSomethingWentWrong,
- ErrorExternalAPIError,
- ErrorInsufficientRights,
- ErrorIllegalCommand,
-
- PingResponse,
-
- EventOn,
- EventOff,
-
- NotifySub,
- NotifyUnsub,
-
- JoinResponse,
- JoinResponseInChat,
- JoinAlreadyIn,
- JoinRejoined,
- JoinFromOtherChat,
- JoinNotAllowed,
-
- CustomcommandNew,
- CustomcommandDelete,
-
- TimerNew,
- TimerDelete,
-
- HelpResponse
- };
-
- std::optional<LineId> string_to_line_id(const std::string &str);
- }
-}
diff --git a/src/localization/localization.cpp b/src/localization/localization.cpp
deleted file mode 100644
index 2742602..0000000
--- a/src/localization/localization.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-#include "localization.hpp"
-
-#include <algorithm>
-#include <filesystem>
-#include <fstream>
-#include <map>
-#include <nlohmann/json.hpp>
-#include <optional>
-#include <string>
-#include <unordered_map>
-#include <vector>
-
-#include "../utils/string.hpp"
-#include "line_id.hpp"
-
-namespace bot {
- namespace loc {
- Localization::Localization(const std::string &folder_path) {
- for (const auto &entry :
- std::filesystem::directory_iterator(folder_path)) {
- std::vector<std::string> file_name_parts =
- utils::string::split_text(entry.path(), '/');
- std::string file_name = file_name_parts[file_name_parts.size() - 1];
- file_name = file_name.substr(0, file_name.length() - 5);
-
- std::unordered_map<LineId, std::string> lines =
- this->load_from_file(entry.path());
-
- this->localizations[file_name] = lines;
- }
- }
-
- std::unordered_map<LineId, std::string> Localization::load_from_file(
- const std::string &file_path) {
- std::ifstream ifs(file_path);
-
- std::unordered_map<LineId, std::string> map;
-
- nlohmann::json json;
- ifs >> json;
-
- for (auto it = json.begin(); it != json.end(); ++it) {
- std::optional<LineId> line_id = string_to_line_id(it.key());
-
- if (line_id.has_value()) {
- map[line_id.value()] = it.value();
- }
- }
-
- ifs.close();
- return map;
- }
-
- std::optional<std::string> Localization::get_localized_line(
- const std::string &locale_id, const LineId &line_id) const {
- auto locale_it =
- std::find_if(this->localizations.begin(), this->localizations.end(),
- [&](const auto &x) { return x.first == locale_id; });
-
- if (locale_it == this->localizations.end()) {
- return std::nullopt;
- }
-
- auto line_it =
- std::find_if(locale_it->second.begin(), locale_it->second.end(),
- [&](const auto &x) { return x.first == line_id; });
-
- if (line_it == locale_it->second.end()) {
- return std::nullopt;
- }
-
- return line_it->second;
- }
-
- std::optional<std::string> Localization::get_formatted_line(
- const std::string &locale_id, const LineId &line_id,
- const std::vector<std::string> &args) const {
- std::optional<std::string> o_line =
- this->get_localized_line(locale_id, line_id);
-
- if (!o_line.has_value()) {
- return std::nullopt;
- }
-
- std::string line = o_line.value();
-
- int pos = 0;
- int index = 0;
-
- while ((pos = line.find("%s", pos)) != std::string::npos) {
- line.replace(pos, 2, args[index]);
- pos += args[index].size();
- ++index;
-
- if (index >= args.size()) {
- break;
- }
- }
-
- return line;
- }
-
- std::optional<std::string> Localization::get_formatted_line(
- const command::Request &request, const LineId &line_id,
- const std::vector<std::string> &args) const {
- std::optional<std::string> o_line = this->get_formatted_line(
- request.channel_preferences.get_locale(), line_id, args);
-
- if (!o_line.has_value()) {
- return std::nullopt;
- }
-
- std::string line = o_line.value();
-
- std::map<std::string, std::string> token_map = {
- {"{sender.alias_name}", request.user.get_alias_name()},
- {"{source.alias_name}", request.channel.get_alias_name()},
- {"{default.prefix}", DEFAULT_PREFIX}};
-
- for (const auto &pair : token_map) {
- int pos = line.find(pair.first);
-
- while (pos != std::string::npos) {
- line.replace(pos, pair.first.length(), pair.second);
- pos = line.find(pair.first, pos + pair.second.length());
- }
- }
-
- return line;
- }
- }
-}
diff --git a/src/localization/localization.hpp b/src/localization/localization.hpp
deleted file mode 100644
index 4626c68..0000000
--- a/src/localization/localization.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#pragma once
-
-#include <optional>
-#include <string>
-#include <unordered_map>
-#include <vector>
-
-#include "../commands/request.hpp"
-#include "line_id.hpp"
-
-namespace bot {
- namespace loc {
- class Localization {
- public:
- Localization(const std::string &folder_path);
- ~Localization() = default;
-
- std::optional<std::string> get_localized_line(
- const std::string &locale_id, const LineId &line_id) const;
-
- std::optional<std::string> get_formatted_line(
- const std::string &locale_id, const LineId &line_id,
- const std::vector<std::string> &args) const;
-
- std::optional<std::string> get_formatted_line(
- const command::Request &request, const LineId &line_id,
- const std::vector<std::string> &args) const;
-
- private:
- std::unordered_map<LineId, std::string> load_from_file(
- const std::string &file_path);
- std::unordered_map<std::string, std::unordered_map<LineId, std::string>>
- localizations;
- };
- }
-
-}