diff options
Diffstat (limited to 'src/modules/m_abbreviation.cpp')
-rw-r--r-- | src/modules/m_abbreviation.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/modules/m_abbreviation.cpp b/src/modules/m_abbreviation.cpp new file mode 100644 index 000000000..fd6309e83 --- /dev/null +++ b/src/modules/m_abbreviation.cpp @@ -0,0 +1,50 @@ +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * InspIRCd: (C) 2002-2008 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * + * This program is free but copyrighted software; see + * the file COPYING for details. + * + * --------------------------------------------------- + */ + +#include "inspircd.h" +#include "wildcard.h" + +/* $ModDesc: Provides the ability to abbreviate commands. */ + +class ModuleAbbreviation : public Module +{ + + public: + + ModuleAbbreviation(InspIRCd* Me) + : Module(Me) + { + Me->Modules->Attach(I_OnPreCommand, this); + /* Must do this first */ + Me->Modules->SetPriority(this, I_OnPreCommand, PRIO_FIRST); + } + + virtual Version GetVersion() + { + return Version(1,2,0,0,VF_VENDOR,API_VERSION); + } + + virtual int OnPreCommand(std::string &command, std::vector<std::string> ¶meters, User *user, bool validated, const std::string &original_line) + { + /* Command is already validated, has a length of 0, or last character is not a . */ + if (validated || command.empty() || *command.rbegin() != '.') + return 0; + + /* Whack the . off the end */ + command.erase(command.end() - 1); + + ServerInstance->Logs->Log("m_abbreviation", DEBUG, "Abbreviated command: %s", command.c_str()); + } +}; + +MODULE_INIT(ModuleAbbreviation) |