diff options
| author | 2018-07-31 03:14:09 +0100 | |
|---|---|---|
| committer | 2019-01-25 02:52:28 +0000 | |
| commit | 97aba4f8a57877ab68ddd618b96f52342970f998 (patch) | |
| tree | c8e162e21d563dd631db80460dc04003ba6653c4 /src/modules/extra | |
| parent | Replace the override macro with the override keyword. (diff) | |
Move m_regex_stdlib out of extras now it can always be built.
Diffstat (limited to 'src/modules/extra')
| -rw-r--r-- | src/modules/extra/m_regex_stdlib.cpp | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/src/modules/extra/m_regex_stdlib.cpp b/src/modules/extra/m_regex_stdlib.cpp deleted file mode 100644 index 4065ec014..000000000 --- a/src/modules/extra/m_regex_stdlib.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/* - * InspIRCd -- Internet Relay Chat Daemon - * - * Copyright (C) 2012 ChrisTX <chris@rev-crew.info> - * - * This file is part of InspIRCd. InspIRCd is free software: you can - * redistribute it and/or modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/// $CompilerFlags: -std=c++11 - - -#include "inspircd.h" -#include "modules/regex.h" -#include <regex> - -class StdRegex : public Regex -{ - std::regex regexcl; - - public: - StdRegex(const std::string& rx, std::regex::flag_type fltype) : Regex(rx) - { - try{ - regexcl.assign(rx, fltype | std::regex::optimize); - } - catch(std::regex_error rxerr) - { - throw RegexException(rx, rxerr.what()); - } - } - - bool Matches(const std::string& text) override - { - return std::regex_search(text, regexcl); - } -}; - -class StdRegexFactory : public RegexFactory -{ - public: - std::regex::flag_type regextype; - StdRegexFactory(Module* m) : RegexFactory(m, "regex/stdregex") {} - Regex* Create(const std::string& expr) override - { - return new StdRegex(expr, regextype); - } -}; - -class ModuleRegexStd : public Module -{ -public: - StdRegexFactory ref; - ModuleRegexStd() : ref(this) - { - } - - Version GetVersion() override - { - return Version("Regex Provider Module for std::regex", VF_VENDOR); - } - - void ReadConfig(ConfigStatus& status) override - { - ConfigTag* Conf = ServerInstance->Config->ConfValue("stdregex"); - std::string regextype = Conf->getString("type", "ecmascript"); - - if (stdalgo::string::equalsci(regextype, "bre")) - ref.regextype = std::regex::basic; - else if (stdalgo::string::equalsci(regextype, "ere")) - ref.regextype = std::regex::extended; - else if (stdalgo::string::equalsci(regextype, "awk")) - ref.regextype = std::regex::awk; - else if (stdalgo::string::equalsci(regextype, "grep")) - ref.regextype = std::regex::grep; - else if (stdalgo::string::equalsci(regextype, "egrep")) - ref.regextype = std::regex::egrep; - else - { - if (!stdalgo::string::equalsci(regextype, "ecmascript")) - ServerInstance->SNO->WriteToSnoMask('a', "WARNING: Non-existent regex engine '%s' specified. Falling back to ECMAScript.", regextype.c_str()); - ref.regextype = std::regex::ECMAScript; - } - } -}; - -MODULE_INIT(ModuleRegexStd) |
