Do you also propose also to support
- dotted identifiers,
- multiple
!identifiers
to apply multiple filters (presumably left-to-right), and - arguments to the filter, perhaps spelled
!identifier('arguments', 'here', 33)
?
Also, just to touch on this aspect: with f-strings, the conversion is applied before the format. It works for me if the filters are applied before the format here too. I believe the templating libraries don’t have the equivalent of a “format spec” for their expansions–they just use filters to format the value–so they don’t express an opinion here. Also, they have some filters that definitely expect to operate on non-string values, which suggests they’d have to be called before the format. (On the other hand, I suppose template strings don’t actually have an opinion about whether you apply the conversion/filter or the format first–the code rendering the template could do whatever it wants.)
Finally, if it were me, I’d be sorely tempted to reserve all one-character strings after the !
for future predefined converters. So !q
wouldn’t work even if you had def q(s): ...
available.