My suggestion is that we make a subclass/superclass/alternate implementation of SoupStrainer which delegates the go/no go decision to a function passed into the constructor. Rather than trying to fit it in as another option in the SoupStrainer class.
Then let's document the interaction between SoupStrainer and the find* methods in more detail, rather than leaving it as an afterthought.
To summarize my actual suggestion:
My suggestion is that we make a subclass/ superclass/ alternate implementation of SoupStrainer which delegates the go/no go decision to a function passed into the constructor. Rather than trying to fit it in as another option in the SoupStrainer class.
Then let's document the interaction between SoupStrainer and the find* methods in more detail, rather than leaving it as an afterthought.