<commit_before>need better data structure for routes. at least we need to make the route
object modifiable before it's called for isMatch() to support micro-framework
idioms. probably reduce the constructor size and replace with setter methods.
lock it after matched?

add accept header (and other headers) to router? Do we capture the values or
do we leave that to the controller?

drop callables for custom matching?

split the route adding/attaching from the matching?

hierarchical routing, or route grouping?

get rid of $attach from the Router constructor
<commit_msg>add todo notes<commit_after>need better data structure for routes. at least we need to make the route
object modifiable before it's called for isMatch() to support micro-framework
idioms. probably reduce the constructor size and replace with setter methods.
lock it after matched?

add accept header (and other headers) to router? Do we capture the values or
do we leave that to the controller?

drop callables for custom matching and generation?

split the route adding/attaching from the matching?

rename "params" to "conditions" or "regex"? can we make it a callable, too?

get rid of $attach from the Router constructor? still want to be able to
attach route defs from packages/modules/etc, and not just have them call the
router directly.

hierarchical routing, or route grouping? can we do this by attaching a second
router object?

for the main router object, define defaults? that would go along with "second
router object" being attached.


{'fraction_non_alphanumeric': 0.04068241469816273, 'fraction_numerical': 0.0, 'mean_word_length': 4.820610687022901, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7157416', 'n_tokens_mistral': 378, 'n_tokens_neox': 370, 'n_words': 234}