From 2ebd27b159a99ebdcadf81b7b627cef2b02fd3e5 Mon Sep 17 00:00:00 2001 From: tastytea Date: Fri, 26 Jul 2019 01:09:04 +0200 Subject: [PATCH] Fixed tag-searching with non-ASCII characters. --search-tags with regular expressions didn't work because regex didn't know how to properly convert case. --- CMakeLists.txt | 2 +- src/search.cpp | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b664bd4..ba17998 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required (VERSION 3.2) project(remwharead - VERSION 0.6.1 + VERSION 0.6.2 LANGUAGES CXX ) diff --git a/src/search.cpp b/src/search.cpp index 2be2d0c..e1256be 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -21,7 +21,6 @@ #include "search.hpp" using std::regex; -using std::regex_constants::icase; using std::regex_search; using std::smatch; using std::find; @@ -85,17 +84,17 @@ search_tags(const vector &entries, string expression, for (const string &tag : tags_or) { const auto it = find_if(entry.tags.begin(), entry.tags.end(), - [&tag, is_re](const string &s) + [&tag, is_re](string s) { + s = to_lowercase(s); if (is_re) { - const regex re("^" + tag + "$", - icase); + const regex re("^" + tag + "$"); return regex_search(s, re); } else { - return to_lowercase(s) == tag; + return (s == tag); } }); if (it == entry.tags.end()) @@ -145,7 +144,7 @@ search_all(const vector &entries, string expression, // Set matched_* to false if term is not found. if (is_re) { - const regex re(term, icase); + const regex re(term); if(!regex_search(title, re)) {