diff options
author | Kyle Edwards <kyle.edwards@kitware.com> | 2021-03-31 14:24:24 (GMT) |
---|---|---|
committer | Kyle Edwards <kyle.edwards@kitware.com> | 2021-03-31 14:24:24 (GMT) |
commit | 5ac8b923f503dcd02c47aa920afc747978bb07ab (patch) | |
tree | 197103cfb0ac32c2be731f17240e16b74bfe4885 /Source/cmCMakePresetsFile.cxx | |
parent | bd4ebf1e58d784c94953e14e0e817ff7617dc729 (diff) | |
download | CMake-5ac8b923f503dcd02c47aa920afc747978bb07ab.zip CMake-5ac8b923f503dcd02c47aa920afc747978bb07ab.tar.gz CMake-5ac8b923f503dcd02c47aa920afc747978bb07ab.tar.bz2 |
CMakePresets.json: Add matches condition
Diffstat (limited to 'Source/cmCMakePresetsFile.cxx')
-rw-r--r-- | Source/cmCMakePresetsFile.cxx | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Source/cmCMakePresetsFile.cxx b/Source/cmCMakePresetsFile.cxx index fbe9fe5..d44dfb3 100644 --- a/Source/cmCMakePresetsFile.cxx +++ b/Source/cmCMakePresetsFile.cxx @@ -11,6 +11,8 @@ #include <cm/string_view> +#include "cmsys/RegularExpression.hxx" + #include "cmCMakePresetsFileInternal.h" #include "cmStringAlgorithms.h" #include "cmSystemTools.h" @@ -561,6 +563,24 @@ bool cmCMakePresetsFileInternal::InListCondition::Evaluate( return true; } +bool cmCMakePresetsFileInternal::MatchesCondition::Evaluate( + const std::vector<MacroExpander>& expanders, int version, + cm::optional<bool>& out) const +{ + std::string str = this->String; + CHECK_EXPAND(out, str, expanders, version); + std::string regexStr = this->Regex; + CHECK_EXPAND(out, regexStr, expanders, version); + + cmsys::RegularExpression regex; + if (!regex.compile(regexStr)) { + return false; + } + + out = regex.find(str); + return true; +} + bool cmCMakePresetsFileInternal::AnyAllOfCondition::Evaluate( const std::vector<MacroExpander>& expanders, int version, cm::optional<bool>& out) const |