On 8/15/07, Ron Adam <[EMAIL PROTECTED]> wrote: > > > Andrew James Wade wrote: > > On Tue, 14 Aug 2007 21:12:32 -0500 > > Ron Adam <[EMAIL PROTECTED]> wrote: > > >> What I was thinking of was just a simple left to right evaluation order. > >> > >> "{0:spec1, spec2, ... }".format(x) > >> > >> I don't expect this will ever get very long. > > > > The first __format__ will return a str, so chains longer than 2 don't > > make a lot of sense. And the delimiter character should be allowed in > > spec1; limiting the length of the chain to 2 allows that without escaping: > > > > "{0:spec1-with-embedded-comma,}".format(x) > > > > My scheme did the same sort of thing with spec1 and spec2 reversed. > > Your order makes more intuitive sense; I chose my order because I > > wanted the syntax to be a generalization of formatting strings. > > > > Handling the chaining within the __format__ methods should be all of > > two lines of boilerplate per method. > > I went ahead and tried this out and it actually cleared up some difficulty > in organizing the parsing code. That was a very nice surprise. :) > > (actual doctest) > > >>> import time > >>> class GetTime(object): > ... def __init__(self, time=time.gmtime()): > ... self.time = time > ... def __format__(self, spec): > ... return fstr(time.strftime(spec, self.time)) > > >>> start = GetTime(time.gmtime(1187154773.0085449)) > > >>> fstr("Start: {0:%d/%m/%Y %H:%M:%S,<30}").format(start) > 'Start: 15/08/2007 05:12:53 '
Caveat: some date formats include a comma. I think the only workaround would be splitting them into separate formats (and using the input date twice). -- Adam Olsen, aka Rhamphoryncus _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com