From 7196ac85548914f78cb195a2893cca85808a428b Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Mon, 2 Jun 2014 23:15:25 -0400 Subject: [PATCH] Variant - ::operator_match disobeyed rc.search.case.sensitive. --- src/Context.cpp | 5 +++-- src/Variant.cpp | 3 ++- src/Variant.h | 1 + test/caseless.t | 16 ---------------- 4 files changed, 6 insertions(+), 19 deletions(-) diff --git a/src/Context.cpp b/src/Context.cpp index 11dce4a8b..e54359571 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -640,8 +640,9 @@ void Context::staticInitialization () Task::coefficients[*var] = config.getReal (*var); } - Lexer::dateFormat = config.get ("dateformat"); - Variant::dateFormat = config.get ("dateformat"); + Lexer::dateFormat = config.get ("dateformat"); + Variant::dateFormat = config.get ("dateformat"); + Variant::searchCaseSensitive = config.getBoolean ("search.case.sensitive"); } //////////////////////////////////////////////////////////////////////////////// diff --git a/src/Variant.cpp b/src/Variant.cpp index 963a01c3f..08610fd61 100644 --- a/src/Variant.cpp +++ b/src/Variant.cpp @@ -37,6 +37,7 @@ #include std::string Variant::dateFormat = ""; +bool Variant::searchCaseSensitive = true; //////////////////////////////////////////////////////////////////////////////// Variant::Variant () @@ -753,7 +754,7 @@ bool Variant::operator_match (const Variant& other) const left.cast (type_string); right.cast (type_string); - RX r (right._string, true); + RX r (right._string, searchCaseSensitive); return r.match (left._string); } diff --git a/src/Variant.h b/src/Variant.h index a2a41f091..137640f3e 100644 --- a/src/Variant.h +++ b/src/Variant.h @@ -34,6 +34,7 @@ class Variant { public: static std::string dateFormat; + static bool searchCaseSensitive; enum type {type_unknown, type_boolean, type_integer, type_real, type_string, type_date, type_duration}; diff --git a/test/caseless.t b/test/caseless.t index 8d40f885f..c56f048ab 100755 --- a/test/caseless.t +++ b/test/caseless.t @@ -50,78 +50,62 @@ qx{../src/task rc:caseless.rc add one two three 2>&1}; qx{../src/task rc:caseless.rc 1 annotate four five six 2>&1}; # Description substitution. -# 2 qx{../src/task rc:caseless.rc rc.search.case.sensitive:yes 1 modify /One/ONE/ 2>&1}; my $output = qx{../src/task rc:caseless.rc info 1 2>&1}; unlike ($output, qr/One two three/, 'one two three\nfour five six -> /One/ONE/ = fail'); -# 3 qx{../src/task rc:caseless.rc rc.search.case.sensitive:no 1 modify /One/ONE/ 2>&1}; $output = qx{../src/task rc:caseless.rc info 1 2>&1}; like ($output, qr/ONE two three/, 'one two three\nfour five six -> /One/ONE/ = caseless succeed'); -# 4 qx{../src/task rc:caseless.rc rc.search.case.sensitive:yes 1 modify /one/One/ 2>&1}; $output = qx{../src/task rc:caseless.rc info 1 2>&1}; unlike ($output, qr/One two three/, 'ONE two three\nfour five six -> /one/ONE/ = fail'); -# 5 qx{../src/task rc:caseless.rc rc.search.case.sensitive:no 1 modify /one/one/ 2>&1}; $output = qx{../src/task rc:caseless.rc info 1 2>&1}; like ($output, qr/one two three/, 'ONE two three\nfour five six -> /one/one/ = caseless succeed'); # Annotation substitution. -# 6 qx{../src/task rc:caseless.rc rc.search.case.sensitive:yes 1 modify /Five/FIVE/ 2>&1}; $output = qx{../src/task rc:caseless.rc info 1 2>&1}; unlike ($output, qr/four FIVE six/, 'one two three\nfour five six -> /Five/FIVE/ = fail'); -# 7 qx{../src/task rc:caseless.rc rc.search.case.sensitive:no 1 modify /Five/FIVE/ 2>&1}; $output = qx{../src/task rc:caseless.rc info 1 2>&1}; like ($output, qr/four FIVE six/, 'one two three\nfour five six -> /Five/FIVE/ = caseless succeed'); -# 8 qx{../src/task rc:caseless.rc rc.search.case.sensitive:yes 1 modify /five/Five/ 2>&1}; $output = qx{../src/task rc:caseless.rc info 1 2>&1}; unlike ($output, qr/four Five six/, 'one two three\nfour FIVE six -> /five/Five/ = fail'); -# 9 qx{../src/task rc:caseless.rc rc.search.case.sensitive:no 1 modify /five/five/ 2>&1}; $output = qx{../src/task rc:caseless.rc info 1 2>&1}; like ($output, qr/four five six/, 'one two three\nfour FIVE six -> /five/five/ = caseless succeed'); # Description filter. -# 10 $output = qx{../src/task rc:caseless.rc rc.search.case.sensitive:yes ls One 2>&1}; unlike ($output, qr/one two three/, 'one two three\nfour five six -> ls One = fail'); -# 11 $output = qx{../src/task rc:caseless.rc rc.search.case.sensitive:no ls One 2>&1}; like ($output, qr/one two three/, 'one two three\nfour five six -> ls One caseless = succeed'); -# 12 $output = qx{../src/task rc:caseless.rc rc.search.case.sensitive:yes ls Five 2>&1}; unlike ($output, qr/four five six/, 'one two three\nfour five six -> ls Five = fail'); -# 13 $output = qx{../src/task rc:caseless.rc rc.search.case.sensitive:no ls Five 2>&1}; like ($output, qr/four five six/, 'one two three\nfour five six -> ls Five caseless = succeed'); # Annotation filter. -# 14 $output = qx{../src/task rc:caseless.rc rc.search.case.sensitive:yes ls description.contains:Three 2>&1}; unlike ($output, qr/one two three/, 'one two three\nfour five six -> ls description.contains:Three = fail'); -# 15 $output = qx{../src/task rc:caseless.rc rc.search.case.sensitive:no ls description.contains:Three 2>&1}; like ($output, qr/one two three/, 'one two three\nfour five six -> ls description.contains:Three caseless = succeed'); -# 16 $output = qx{../src/task rc:caseless.rc rc.search.case.sensitive:yes ls description.contains:Six 2>&1}; unlike ($output, qr/four five six/, 'one two three\nfour five six -> ls description.contains:Six = fail'); -# 17 $output = qx{../src/task rc:caseless.rc rc.search.case.sensitive:no ls description.contains:Six 2>&1}; like ($output, qr/four five six/, 'one two three\nfour five six -> ls description.contains:Six caseless = succeed');