src/settings.cpp

changeset 14
f0ae064c5b9c
child 16
730a5638c4ad
equal deleted inserted replaced
13:e714005f3e9d 14:f0ae064c5b9c
1 /* Copyright 2025 Mike Becker. All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * 1. Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 *
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
21 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */
24
25 #include "settings.h"
26
27 #include <format>
28 #include <algorithm>
29
30 using namespace fm;
31
32 [[nodiscard]] bool settings::exclude_author(const std::string &author) const {
33 // no allow-list means: always allowed
34 if (authors.empty()) return false;
35
36 // check all allowed authors
37 return std::ranges::all_of(authors, [&](const auto &allowed) {
38 // check for exact match
39 if (author == allowed) return false;
40
41 // check mail address matching
42 if (author.contains(std::format("<{}>", allowed))) return false;
43
44 // check local-part from mail address matching
45 if (author.contains(std::format("<{}@", allowed))) return false;
46
47 return true;
48 });
49 }

mercurial