summaryrefslogtreecommitdiffstats
path: root/Source/cmCMakePresetsFile.cxx
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2021-03-31 14:24:24 (GMT)
committerKyle Edwards <kyle.edwards@kitware.com>2021-03-31 14:24:24 (GMT)
commit5ac8b923f503dcd02c47aa920afc747978bb07ab (patch)
tree197103cfb0ac32c2be731f17240e16b74bfe4885 /Source/cmCMakePresetsFile.cxx
parentbd4ebf1e58d784c94953e14e0e817ff7617dc729 (diff)
downloadCMake-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.cxx20
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