[Maintenance]: TokenFiltering

Open
#6,045 0 comments 0 reactions 1 assignee View on GitHub

Maintainers usually reply within 1 day

@bubblobill is already working on this.

Since Sep 11, 2026.

Assessment

This issue has not been assessed yet.

Description

code-maintenance
Describe the problem

Zone.Filter interface is used in various places with most implementations being in FindTokenFunctions.
Since the filter is used in many capacities, is not only limited to a single zone, and is actually filtering tokens, keeping it in Zone seems inappropriate.
The code in FindTokenFunctions is kind of convoluted and adding features can be non-trivial. Additionally, it cannot really be easily leveraged for use in other functions.

The improvement you'd like to see
  1. Since the interface functions as a Predicate, it should be changed to an actual Predicate, renaming the matchToken method to test.
  2. Extract it out of Zone
  3. For all the various conditions currently coded in FindTokenFunctions, create separate static classes.
  4. Create a class for holding a list of filter instances with a defined execution order.
  5. Move hard-coded conditions that reduce the available token set (i.e. exclude lib/img tokens) to its own filter.
Expected Benefits
  1. Simplifying list operations.
  2. By defiing the execution order, cheap operations that are likely to filter out the most tokens can be done early, with expensive operations left to the end.
  3. Increases code legibility.
  4. Makes token filtering operations easier to implement in future.
Additional Context

No response

Dominant language
Java
Stars
927
Forks
286
Avg merge
3d 17h
Merged PRs (30d)
94

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from RPTools/maptool

All issues in RPTools/maptool

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.