From 06641f29a7bdcda280b0291f215193f055c83969 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Tue, 26 Jan 2016 02:20:52 +0100 Subject: COMMON: Allow '#' to only match digits in matchString. --- common/str.cpp | 7 +++++++ common/str.h | 6 ++++++ test/common/str.h | 3 +++ 3 files changed, 16 insertions(+) diff --git a/common/str.cpp b/common/str.cpp index faf84d722f..ae3a965c70 100644 --- a/common/str.cpp +++ b/common/str.cpp @@ -751,6 +751,13 @@ bool matchString(const char *str, const char *pat, bool ignoreCase, bool pathMod return true; break; + case '#': + if (!isDigit(*str)) + return false; + pat++; + str++; + break; + default: if ((!ignoreCase && *pat != *str) || (ignoreCase && tolower(*pat) != tolower(*str))) { diff --git a/common/str.h b/common/str.h index a30dae3513..1b41c481c7 100644 --- a/common/str.h +++ b/common/str.h @@ -158,6 +158,7 @@ public: * Token meaning: * "*": any character, any amount of times. * "?": any character, only once. + * "#": any decimal digit, only once. * * Example strings/patterns: * String: monkey.s01 Pattern: monkey.s?? => true @@ -165,6 +166,8 @@ public: * String: monkey.s99 Pattern: monkey.s?1 => false * String: monkey.s101 Pattern: monkey.s* => true * String: monkey.s99 Pattern: monkey.s*1 => false + * String: monkey.s01 Pattern: monkey.s## => true + * String: monkey.s01 Pattern: monkey.### => false * * @param pat Glob pattern. * @param ignoreCase Whether to ignore the case when doing pattern match @@ -330,6 +333,7 @@ String normalizePath(const String &path, const char sep); * Token meaning: * "*": any character, any amount of times. * "?": any character, only once. + * "#": any decimal digit, only once. * * Example strings/patterns: * String: monkey.s01 Pattern: monkey.s?? => true @@ -337,6 +341,8 @@ String normalizePath(const String &path, const char sep); * String: monkey.s99 Pattern: monkey.s?1 => false * String: monkey.s101 Pattern: monkey.s* => true * String: monkey.s99 Pattern: monkey.s*1 => false + * String: monkey.s01 Pattern: monkey.s## => true + * String: monkey.s01 Pattern: monkey.### => false * * @param str Text to be matched against the given pattern. * @param pat Glob pattern. diff --git a/test/common/str.h b/test/common/str.h index adc6a099e4..3ab5d828c1 100644 --- a/test/common/str.h +++ b/test/common/str.h @@ -332,6 +332,9 @@ class StringTestSuite : public CxxTest::TestSuite TS_ASSERT(!Common::matchString("monkey.s99", "monkey.s*1")); TS_ASSERT(Common::matchString("monkey.s101", "monkey.s*1")); + TS_ASSERT(Common::matchString("monkey.s01", "monkey.s##")); + TS_ASSERT(!Common::matchString("monkey.s01", "monkey.###")); + TS_ASSERT(!Common::String("").matchString("*_")); TS_ASSERT(Common::String("a").matchString("a***")); } -- cgit v1.2.3