Adam Olsen wrote: > 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).
Maybe having an escaped comma? '\,' It really isn't any different than escaping quotes. It could be limited to just inside format {} expressions I think. Using raw strings with '\54' won't work. Ron _______________________________________________ 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