Filters: Make behavior of "whole word" filters consistent with the web UI when filters are non-alphanumeric (#1623)
* Fix tests build * Make behavior of non-alphanumeric whole-word filters consistent with the web UI. Fixes #1543 * Fix typo in filter tests
This commit is contained in:
parent
352ff3a2d1
commit
9d65b2ace1
3 changed files with 24 additions and 3 deletions
|
@ -95,6 +95,7 @@ public abstract class SFragment extends BaseFragment implements Injectable {
|
|||
private static List<Filter> filters;
|
||||
private boolean filterRemoveRegex;
|
||||
private Matcher filterRemoveRegexMatcher;
|
||||
private static Matcher alphanumeric = Pattern.compile("^\\w+$").matcher("");
|
||||
|
||||
@Inject
|
||||
public MastodonApi mastodonApi;
|
||||
|
@ -520,8 +521,11 @@ public abstract class SFragment extends BaseFragment implements Injectable {
|
|||
}
|
||||
|
||||
private static String filterToRegexToken(Filter filter) {
|
||||
String phrase = Pattern.quote(filter.getPhrase());
|
||||
return filter.getWholeWord() ? String.format("(^|\\W)%s($|\\W)", phrase) : phrase;
|
||||
String phrase = filter.getPhrase();
|
||||
String quotedPhrase = Pattern.quote(phrase);
|
||||
return (filter.getWholeWord() && alphanumeric.reset(phrase).matches()) ? // "whole word" should only apply to alphanumeric filters, #1543
|
||||
String.format("(^|\\W)%s($|\\W)", quotedPhrase) :
|
||||
quotedPhrase;
|
||||
}
|
||||
|
||||
public static void flushFilters() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue