summaryrefslogtreecommitdiffstats
path: root/yql/essentials/core/url_preprocessing/pattern_group.cpp
diff options
context:
space:
mode:
authorvvvv <[email protected]>2024-11-07 12:29:36 +0300
committervvvv <[email protected]>2024-11-07 13:49:47 +0300
commitd4c258e9431675bab6745c8638df6e3dfd4dca6b (patch)
treeb5efcfa11351152a4c872fccaea35749141c0b11 /yql/essentials/core/url_preprocessing/pattern_group.cpp
parent13a4f274caef5cfdaf0263b24e4d6bdd5521472b (diff)
Moved other yql/essentials libs YQL-19206
init commit_hash:7d4c435602078407bbf20dd3c32f9c90d2bbcbc0
Diffstat (limited to 'yql/essentials/core/url_preprocessing/pattern_group.cpp')
-rw-r--r--yql/essentials/core/url_preprocessing/pattern_group.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/yql/essentials/core/url_preprocessing/pattern_group.cpp b/yql/essentials/core/url_preprocessing/pattern_group.cpp
new file mode 100644
index 00000000000..8185a84a7f1
--- /dev/null
+++ b/yql/essentials/core/url_preprocessing/pattern_group.cpp
@@ -0,0 +1,28 @@
+#include "pattern_group.h"
+
+namespace NYql {
+
+void TPatternGroup::Add(const TString& pattern, const TString& alias) {
+ auto it = CompiledPatterns.find(pattern);
+ if (it != CompiledPatterns.end()) {
+ return;
+ }
+
+ CompiledPatterns.emplace(pattern, std::make_pair(TRegExMatch(pattern), alias));
+}
+
+bool TPatternGroup::IsEmpty() const {
+ return CompiledPatterns.empty();
+}
+
+TMaybe<TString> TPatternGroup::Match(const TString& s) const {
+ for (auto& p : CompiledPatterns) {
+ if (p.second.first.Match(s.c_str())) {
+ return p.second.second;
+ }
+ }
+
+ return Nothing();
+}
+
+}