mirror of
https://github.com/anope/anope.git
synced 2026-06-12 17:04:47 +02:00
Make mlock messages consistent, centralise mode string formatting.
Closes #356.
This commit is contained in:
+11
-7
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Anope\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-11-10 02:45+0000\n"
|
||||
"POT-Creation-Date: 2025-11-11 21:08+0000\n"
|
||||
"PO-Revision-Date: 2025-11-10 02:45+0000\n"
|
||||
"Last-Translator: Sadie Powell <sadie@witchery.services>\n"
|
||||
"Language-Team: English\n"
|
||||
@@ -762,11 +762,11 @@ msgid "%c is an unknown status mode."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%c%c is not locked on %s."
|
||||
msgid "%c%c can not be locked on %s."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%c%c%s has been unlocked from %s."
|
||||
msgid "%c%c is not locked on %s."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -987,6 +987,14 @@ msgstr ""
|
||||
msgid "%s had an invalid key specified, and was thus ignored."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s has been locked on %s."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s has been unlocked from %s."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s has no memo limit."
|
||||
msgstr ""
|
||||
@@ -1080,10 +1088,6 @@ msgstr ""
|
||||
msgid "%s list is empty."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s locked on %s."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s not found."
|
||||
msgstr ""
|
||||
|
||||
@@ -12,6 +12,43 @@
|
||||
#include "module.h"
|
||||
#include "modules/chanserv/mode.h"
|
||||
|
||||
class ModeFormatter final
|
||||
{
|
||||
private:
|
||||
Anope::string addmodes;
|
||||
Anope::string addparams;
|
||||
Anope::string delmodes;
|
||||
Anope::string delparams;
|
||||
|
||||
public:
|
||||
void Push(ChannelMode* cm, const Anope::string ¶m, bool adding)
|
||||
{
|
||||
if (adding)
|
||||
{
|
||||
this->addmodes.push_back(cm->mchar);
|
||||
if (!param.empty())
|
||||
this->addparams.append(" ").append(param);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->delmodes.push_back(cm->mchar);
|
||||
if (!param.empty())
|
||||
this->delparams.append(" ").append(param);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Anope::string ToString() const
|
||||
{
|
||||
Anope::string buffer;
|
||||
if (!addmodes.empty())
|
||||
buffer.append("+").append(addmodes).append(addparams);
|
||||
if (!delmodes.empty())
|
||||
buffer.append("-").append(delmodes).append(delparams);
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
|
||||
struct ModeLockImpl final
|
||||
: ModeLock
|
||||
, Serializable
|
||||
@@ -178,30 +215,14 @@ struct ModeLocksImpl final
|
||||
|
||||
Anope::string GetMLockAsString(bool complete) const override
|
||||
{
|
||||
Anope::string pos = "+", neg = "-", params;
|
||||
|
||||
ModeFormatter formatter;
|
||||
for (auto *ml : *this->mlocks)
|
||||
{
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(ml->name);
|
||||
|
||||
if (!cm || cm->type == MODE_LIST || cm->type == MODE_STATUS)
|
||||
continue;
|
||||
|
||||
if (ml->set)
|
||||
pos += cm->mchar;
|
||||
else
|
||||
neg += cm->mchar;
|
||||
|
||||
if (complete && ml->set && !ml->param.empty() && cm->type == MODE_PARAM)
|
||||
params += " " + ml->param;
|
||||
auto *cm = ModeManager::FindChannelModeByName(ml->name);
|
||||
if (cm && cm->type != MODE_LIST && cm->type != MODE_STATUS)
|
||||
formatter.Push(cm, ml->param, ml->set);
|
||||
}
|
||||
|
||||
if (pos.length() == 1)
|
||||
pos.clear();
|
||||
if (neg.length() == 1)
|
||||
neg.clear();
|
||||
|
||||
return pos + neg + params;
|
||||
return formatter.ToString();
|
||||
}
|
||||
|
||||
void Check() override
|
||||
@@ -298,9 +319,9 @@ class CommandCSMode final
|
||||
|
||||
sep.GetToken(modes);
|
||||
|
||||
Anope::string pos = "+", neg = "-", pos_params, neg_params;
|
||||
ModeFormatter formatter;
|
||||
|
||||
int adding = 1;
|
||||
int adding = -1;
|
||||
bool needreply = true;
|
||||
for (auto mode : modes)
|
||||
{
|
||||
@@ -351,32 +372,17 @@ class CommandCSMode final
|
||||
continue;
|
||||
}
|
||||
|
||||
modelocks->SetMLock(cm, adding, mode_param, source.GetNick());
|
||||
|
||||
if (adding)
|
||||
{
|
||||
pos += cm->mchar;
|
||||
if (!mode_param.empty())
|
||||
pos_params += " " + mode_param;
|
||||
}
|
||||
if (modelocks->SetMLock(cm, adding, mode_param, source.GetNick()))
|
||||
formatter.Push(cm, mode_param, adding);
|
||||
else
|
||||
{
|
||||
neg += cm->mchar;
|
||||
if (!mode_param.empty())
|
||||
neg_params += " " + mode_param;
|
||||
}
|
||||
source.Reply(_("%c%c can not be locked on %s."), adding == 1 ? '+' : '-', cm->mchar, ci->name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
if (pos == "+")
|
||||
pos.clear();
|
||||
if (neg == "-")
|
||||
neg.clear();
|
||||
Anope::string reply = pos + neg + pos_params + neg_params;
|
||||
|
||||
const auto reply = formatter.ToString();
|
||||
if (!reply.empty())
|
||||
{
|
||||
source.Reply(_("%s locked on %s."), reply.c_str(), ci->name.c_str());
|
||||
source.Reply(_("%s has been locked on %s."), reply.c_str(), ci->name.c_str());
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "to lock " << reply;
|
||||
}
|
||||
else if (needreply)
|
||||
@@ -392,6 +398,8 @@ class CommandCSMode final
|
||||
|
||||
sep.GetToken(modes);
|
||||
|
||||
ModeFormatter formatter;
|
||||
|
||||
int adding = 1;
|
||||
bool needreply = true;
|
||||
for (auto mode : modes)
|
||||
@@ -424,19 +432,20 @@ class CommandCSMode final
|
||||
else
|
||||
{
|
||||
if (modelocks->RemoveMLock(cm, adding, mode_param))
|
||||
{
|
||||
if (!mode_param.empty())
|
||||
mode_param = " " + mode_param;
|
||||
source.Reply(_("%c%c%s has been unlocked from %s."), adding == 1 ? '+' : '-', cm->mchar, mode_param.c_str(), ci->name.c_str());
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "to unlock " << (adding ? '+' : '-') << cm->mchar << mode_param;
|
||||
}
|
||||
formatter.Push(cm, mode_param, adding);
|
||||
else
|
||||
source.Reply(_("%c%c is not locked on %s."), adding == 1 ? '+' : '-', cm->mchar, ci->name.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (needreply)
|
||||
const auto reply = formatter.ToString();
|
||||
if (!reply.empty())
|
||||
{
|
||||
source.Reply(_("%s has been unlocked from %s."), reply.c_str(), ci->name.c_str());
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "to lock " << reply;
|
||||
}
|
||||
else if (needreply)
|
||||
source.Reply(_("Nothing to do."));
|
||||
}
|
||||
else if (subcommand.equals_ci("LIST"))
|
||||
|
||||
Reference in New Issue
Block a user