
On 06May2021 03:43, Dennis Sweeney <sweeney.dennis650@gmail.com> wrote:
Maybe I'm missing something, but why do you need the SimpleNamespace at all? Why not make your own mapping as in
class StringMapper: ... def __getitem__(self, s): # Whatever arbitrary behavior you want # Process suffixes, etc here, for example: if s.endswith(".lc"): return self.wrapped[s.removesuffix(".lc")].lower() return self.wrapped[s]
format_string.format_map(StringMapper(whatever))
Maybe then the data can just be data and this wrapper can handle all the formatting conversions.
All this is somewhat orthoganal to adding more !foo things. If we're not talking about extending the conversions, we should probably take this over to python-list, because the ":foo" stuff is just implementation. That said, because my tags can have dots in their names and I want to be able to write: {tag.name.with.dot} and this is accomplished with an elaborate SimpleNamespace subclass to make the .name.with.dot stuff work as attributes. Just don't ask :-( Oh, you did :-) Anyway, I may be shifting sideways per my recent ":foo" post, using a new class which is a magic view of the TagSet and a Formatter subclass which parses the field_names itself (thus grabbing the dotted identifier). Still a work in progress. Cheers, Cameron Simpson <cs@cskk.id.au>