diff options
author | Marc Chevrier <marc.chevrier@sap.com> | 2018-04-03 13:09:53 (GMT) |
---|---|---|
committer | Marc Chevrier <marc.chevrier@sap.com> | 2018-04-16 13:04:14 (GMT) |
commit | cdae12f8f86730e075598118ebe5fd2f11746af7 (patch) | |
tree | 9e8dfbd6dffbdcb571126f78346af549e176ce48 /Source/cmStringReplaceHelper.h | |
parent | 912c2a6c7f4c0e0f478740254d063f4f9cd2c892 (diff) | |
download | CMake-cdae12f8f86730e075598118ebe5fd2f11746af7.zip CMake-cdae12f8f86730e075598118ebe5fd2f11746af7.tar.gz CMake-cdae12f8f86730e075598118ebe5fd2f11746af7.tar.bz2 |
string() Refactoring: creates an helper for REGEX REPLACE
Diffstat (limited to 'Source/cmStringReplaceHelper.h')
-rw-r--r-- | Source/cmStringReplaceHelper.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Source/cmStringReplaceHelper.h b/Source/cmStringReplaceHelper.h new file mode 100644 index 0000000..938325a --- /dev/null +++ b/Source/cmStringReplaceHelper.h @@ -0,0 +1,69 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmStringReplaceHelper_h +#define cmStringReplaceHelper_h + +#include "cmsys/RegularExpression.hxx" + +#include <string> +#include <vector> + +class cmMakefile; + +class cmStringReplaceHelper +{ +public: + cmStringReplaceHelper(const std::string& regex, + const std::string& replace_expr, + cmMakefile* makefile = nullptr); + + bool IsRegularExpressionValid() const + { + return this->RegularExpression.is_valid(); + } + bool IsReplaceExpressionValid() const + { + return this->ValidReplaceExpression; + } + + bool Replace(const std::string& input, std::string& output); + + const std::string& GetError() { return this->ErrorString; } + +private: + class RegexReplacement + { + public: + RegexReplacement(const char* s) + : Number(-1) + , Value(s) + { + } + RegexReplacement(const std::string& s) + : Number(-1) + , Value(s) + { + } + RegexReplacement(int n) + : Number(n) + , Value() + { + } + RegexReplacement() {} + + int Number; + std::string Value; + }; + + void ParseReplaceExpression(); + + std::string ErrorString; + std::string RegExString; + cmsys::RegularExpression RegularExpression; + bool ValidReplaceExpression = true; + std::string ReplaceExpression; + std::vector<RegexReplacement> Replacements; + cmMakefile* Makefile = nullptr; +}; + +#endif |