On Wed, 22 Aug 2007 21:33:19 -0400
Eric Smith <[EMAIL PROTECTED]> wrote:

> Ron Adam wrote:
...
> > That would mean there is no way to pass a brace to a __format__ method.
> 
> No way using string.format, correct.  You could pass it in using the 
> builtin format(), or by calling __format__ directly.  But you're 
> correct, for the most part if string.format doesn't accept it, it's not 
> practical.

What about:
>>>  "{0:{lb}{1}{lb}}".format(ShowSpec(), 'abc', lb='{', rb='}')
'{abc}'
Ugly, but better than nothing.

> > I think it's actually easier to do it recursively and not put limits on 
> > where format specifiers can be used or not.
>
> But then you'd always have to worry that some replaced string looks like 
> something that could be interpreted as a field, even if that's not what 
> you want.
> 
> What if "{value}" came from user supplied input?  I don't think you'd 
> want (or expect) any string you output that contains braces to be expanded.

Not a problem with recursion:

$ echo $(echo $(pwd))
/home/ajwade
$ a='echo $(pwd)'
$ echo $a
echo $(pwd)
$ echo $($a)
$(pwd)
$ echo $($($a))
bash: $(pwd): command not found

The key is to do substitution only once at each level of recursion;
which is what a naive recursive algorithm would do anyway. And I'd do
the recursive substitution before even starting to parse the field:
it's simple and powerful.

-- Andrew
_______________________________________________
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

Reply via email to