Template processor forces a newline at the end of the output

Bug #218706 reported by Eleanor Berger
6
Affects Status Importance Assigned to Milestone
Launchpad itself
Triaged
Low
Unassigned
Zope 3
Fix Released
Undecided
Fred Drake

Bug Description

The template processor inserts a newline \n character at the end of the output even if it's not there. In some cases, it is important that no such new line appears, but this result is currently impossible to achieve.

http://mail.zope.org/pipermail/zpt/2004-July/005386.html

Changed in launchpad:
assignee: nobody → intellectronica
status: New → Confirmed
milestone: none → 1.2.4
Changed in launchpad:
milestone: 1.2.4 → 1.2.5
Revision history for this message
Matthew Paul Thomas (mpt) wrote :

For example, in mpt/launchpad/2008-05-translation, see <http://translations.launchpad.dev/evolution/trunk/+pots/evolution-2.2/es/+translate>. There should be only a 1px white line between the segments, not the current space caused by a line break.

description: updated
Revision history for this message
Steve Alexander (stevea) wrote :

The fix in Zope is needed in lib/zope/tal/talinterpreter.py, in __call__. These lines should be removed:

if self.col > 0:
    self._stream_write("\n")
    self.col = 0

The full discussion in the mailing list spans two months.

  http://mail.zope.org/pipermail/zpt/2004-June/005372.html
  http://mail.zope.org/pipermail/zpt/2004-June/005373.html
  http://mail.zope.org/pipermail/zpt/2004-July/005386.html

The code in question hasn't been touched in many months.

  http://svn.zope.org/zope.tal/trunk/src/zope/tal/talinterpreter.py?rev=75193&view=markup

Revision history for this message
Fred Drake (fdrake) wrote : Re: [Bug 218706] Re: Template processor forces a newline at the end of the output

The catch, of course, is that we can't know if there's anyone that
relies on it for other reasons. I'd be happy to rip it out otherwise.

Removing that code causes many tests to break, and all the breakage
appears incidental rather than fundamental.

Would people be happy with the current behavior as a default, and a
way to set an attribute of the TALInterpreter instance to use the
cleaner behavior? An attribute on the page template object could then
be used to record the application's requirements.

Revision history for this message
Steve Alexander (stevea) wrote :

Fred, I don't think we need to tread so carefully. If we change this behaviour in a major release, and document the change in the release notes, I think that's enough. It's far easier to insert a newline into templates manually than to remove one that the libraries brokenly stick in.

Zope already suffers too much from excessive complexity to support backwards compatibility that almost no one uses.

This change is in line with the published TAL spec. I think the current behaviour is counter-intuitive and arguably taking a great liberty with the TAL spec, in introducing extra characters.

I very much support updating the tests to not have extra new-lines and updating the code, and documenting the change in the change notes, and releasing this.

Revision history for this message
Christian Reis (kiko) wrote :

Fred, c'mon, if not just for Launchpad, let's do it for the kittens. <wink>

Changed in launchpad:
milestone: 1.2.5 → none
Revision history for this message
Fred Drake (fdrake) wrote :

Fixed in subversion revision 87220.

Tested with Python 2.4.4, 2.5.2.

Released in zope.tal 3.5.0 (http://pypi.python.org/pypi/zope.tal/3.5.0/).

Changed in zope3:
assignee: nobody → fdrake
status: New → Fix Released
Curtis Hovey (sinzui)
tags: added: tech-debt
Curtis Hovey (sinzui)
Changed in launchpad-foundations:
assignee: Tom Berger (intellectronica) → nobody
Curtis Hovey (sinzui)
Changed in launchpad-foundations:
status: Confirmed → Triaged
importance: Undecided → Low
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.