On 3/12/07, Patrick Maupin <[EMAIL PROTECTED]> wrote:

Eric Smith and I have a reasonable first-cut of a C implementation for
Talin's PEP3101 (it runs as an extension module and has been tested on
Python 2.3,  2.4, and 3.0) along with some test cases.  It's sort of
experimental, in that it mostly implements the PEP, but also
implements a few possible enhancements and changes, to give us (well,
me, mostly) an idea of what works and what doesn't, and ideas about
changes that might be useful.

This list of potential changes to the PEP is in order of (what I
believe to be) most contentious first.  (It will be interesting to
contrast that with the actual votes :).  I apologize for the long
list, but it's quite a comprehensive PEP, and the implementation work
Eric and I have done has probably encompassed the most critical
examination of the PEP to date, so here goes:


Feature:  Alternate syntaxes for escape to markup.

There is naturally a strong desire to resist having more than one way
to do things.  However, in my experience using Python to generate lots
of text (which experience is why I volunteered to work on the PEP
implementation in the first place!), I have found that there are
different application domains which naturally lend themselves to
different approaches for escape to markup.  The issues are:

   - In some application domains, the number of {} characters in the
actual character data is dizzying.  This leads to two problems: first
that there are an inordinate number of { and } characters to escape by
doubling, and second (and even more troubling) is that it can be very
difficult to locate the markup inside the text file, without an editor
(and user!) that understands fancy regexps.

- In other application domains, the sheer number of {} characters is
not so bad (and markup can be readily noticed), but the use of {{ for
{ is very confusing, because { has a particular technical meaning
(rather than just offsetting some natural language text), and it is
hard for people to mentally parse the underlying document when the
braces are doubled.

To deal with these issues, I propose having a total of 3 markup
syntaxes, with one of them being the default, and with a readable,
defined method for the string to declare it is using one of the other
markup syntaxes.  (If this is accepted, I feel that EIBTI says the
string itself should declare if it is using other than the standard
markup transition sequence.  This also makes it easier for any
automated tools to understand the insides of the strings.)

The default markup syntax is the one proposed in the initial PEP,
where literal { and } characters are denoted by doubling them.  It
works well for many problem domains, and is the best for short strings
(where it would be burdensome to have the string declare the markup
syntax it is using).

The second method is the well-understood ${} syntax.  The $ is easy to
find in a sea of { characters, and the only special handling required
is that every $ must be doubled.



I like ${}.  I have admired Ruby's #{} when I've had to use it, as it is
easy to read.  It kind of reminds me of #!/bin/sh in shell scripts,
reminding me that it is something magic.

Disclaimer:  I know nothing of the consequences to enabling this.

Jerry Seutter
_______________________________________________
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