Opened 19 years ago

Closed 16 years ago

#1227 closed defect (fixed)

Problem with spaceless

Reported by: Simon Willison Owned by: Adrian Holovaty
Component: Template system Version:
Severity: normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

The new spaceless tag introduced in [1968] is over-zealous. Consider the following example (taken from metafilter, where it is a common idiom):

<a href="http://www.carm.org/questions/rock.htm">Can God</a> <a href="http://www.str.org/site/News2?page=NewsArticle&id=5160">make a rock</a> <a href="http://www.godandscience.org/apologetics/rock.html">so heavy</a> <a href="http://www.simpsoncrazy.com/information/scripts/dabf11.shtml">that he</a> <a href="http://geocities.com/cangodmakearock">could not</a> <a href="http://www.askmoses.com/qa_detail.html?h=419&o=237">lift it?</a>

The spaceless tag would remove the spaces between these links entirely, causing them to look like this:

CanGodmakearocksoheavythathecouldnotliftit?

The solution is to replace multiple whitespace with a single space rather than removing them entirely. A more complex solution would be to remove ALL whitespace between block-level tags but leave space beteween inline tags, but the complexity and performance overhead of doing this probably prohibits it.

Change History (3)

comment:1 by Adrian Holovaty, 19 years ago

Resolution: fixed
Status: newclosed

(In [1969]) Fixed #1227 -- Fixed problem with new {% spaceless %} tag. It now normalizes spaces to a single space rather than no spaces

comment:2 by cfinke, 16 years ago

Resolution: fixed
Status: closedreopened

This bug has since been re-introduced.

The latest code shows that the function is back to :

return re.sub(r'>\s+<', '><', force_unicode(value))

instead of

return re.sub(r'>\s+<', '> <', force_unicode(value))

comment:3 by Malcolm Tredinnick, 16 years ago

Resolution: fixed
Status: reopenedclosed

This was done intentionally (and after quite a bit of discussion, from memory) in r4885 (see #3532).

Note: See TracTickets for help on using tickets.
Back to Top