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.
This commit is contained in:
tastytea 2019-07-26 01:09:04 +02:00
parent 9ff4a9e76b
commit 2ebd27b159
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
2 changed files with 6 additions and 7 deletions

View File

@ -1,6 +1,6 @@
cmake_minimum_required (VERSION 3.2) cmake_minimum_required (VERSION 3.2)
project(remwharead project(remwharead
VERSION 0.6.1 VERSION 0.6.2
LANGUAGES CXX LANGUAGES CXX
) )

View File

@ -21,7 +21,6 @@
#include "search.hpp" #include "search.hpp"
using std::regex; using std::regex;
using std::regex_constants::icase;
using std::regex_search; using std::regex_search;
using std::smatch; using std::smatch;
using std::find; using std::find;
@ -85,17 +84,17 @@ search_tags(const vector<Database::entry> &entries, string expression,
for (const string &tag : tags_or) for (const string &tag : tags_or)
{ {
const auto it = find_if(entry.tags.begin(), entry.tags.end(), 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) if (is_re)
{ {
const regex re("^" + tag + "$", const regex re("^" + tag + "$");
icase);
return regex_search(s, re); return regex_search(s, re);
} }
else else
{ {
return to_lowercase(s) == tag; return (s == tag);
} }
}); });
if (it == entry.tags.end()) if (it == entry.tags.end())
@ -145,7 +144,7 @@ search_all(const vector<Database::entry> &entries, string expression,
// Set matched_* to false if term is not found. // Set matched_* to false if term is not found.
if (is_re) if (is_re)
{ {
const regex re(term, icase); const regex re(term);
if(!regex_search(title, re)) if(!regex_search(title, re))
{ {