Hi Mike, This looks good to me. Thanks. The C extension changes will be trickier. On May 23, 2010, at 1:37 PM, Michael Watkins wrote: > For your consideration before another QPY release, attached is another > patch to quoted.py replacing the prior one submitted. > > In addition to providing a .format() method this patch includes a new > method .__html__() which simply returns self. This allows QPY's xml > escape-no-more capability to be respected by other template systems and > frameworks that are supporting the __html__ method marker[1]. I've done > some testing with another templating package, Jinja2, to confirm that > change proposed behaves as expected. > > As described by Mike Orr[1]: > > .__html__() is a convention used for smart escaping. String-like > objects should return self to indicate that they're preformatted and > should not be escaped further. Other objects can define .__html__() to > indicate their preferred HTML format. This convention is used by > literal() in webhelpers.html, and by the render functions that ship > with Pylons (render_mako, etc). I didn't know WebOb itself also did > it. > > Previous implementations of smart escaping (Quixote, Genshi) required > preformatted objects to be a certain class. This made it impossible > for third-party libraries to mark their objects preformatted, because > they'd have to depend on the package with the special class, which > they'd refuse to do or wouldn't know about. Worse, they would be tied > to one specific template library rather than supporting all of them. > The .__html__ strategy allows third-party packages to define their own > string subclass with an .__html__ method rather than having to depend > on a special class in a foreign package. > > A number of other projects referencing the above noted quotation or have > implemented .__html__() equivalents to what I've submitted here. [2][3][4] > > PS: The original patch to provide .format() capability to xml instances > (included in the attached) has been working with no issues noted. I had a > stab at modifying the C extension but muffed that up, hence no patch for > that. > > [1] http://groups.google.com/group/pylons-discuss/msg/f545900b872023e0 > [2] > http://groups.google.com/group/wtforms/browse_thread/thread/cde309662816f865 > [3] http://pythonpaste.org/webob/news.html#id6 > [4] http://code.djangoproject.com/attachment/ticket/7261/html.diff
> _______________________________________________ > QP mailing list > QP@mems-exchange.org > http://mail.mems-exchange.org/mailman/listinfo/qp