D12403: templates: make `firstline` filter not keep '\v', '\f' and similar

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Fri Mar 25 05:38:27 UTC 2022


martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  In b288b4bb8448 <https://phab.mercurial-scm.org/rHGb288b4bb8448068112c2f07c6b495aa182d693e3> (hide some functions behind lambdas, so demandload is
  useful., 2006-02-28), `x.splitlines(1)[0]` was replaced by
  `x.splitlines(1)[0].rstrip('\r\n')`, i.e. stripping trailing '\r' and
  '\n'. Combined with the "truthy" `1` passed to `splitlines()` to get
  it to keep line endings, that results in e.g. trailing '\v' (Line
  Tabulation) and '\f' (Form Feed) being preserved. I can't see why one
  would want that, and I doubt that was the intention; I suspect the
  author just didn't think to instead remove the `1` argument. Perhaps
  they thought the 1 being passed there - added by themselves in
  a7e416bf3c1d <https://phab.mercurial-scm.org/rHGa7e416bf3c1de62ff0ac5b5e8f30b4d1c2d4c67e> (improve templating., 2006-02-27) - was to limit the
  number of splits to 1 (i.e. thinking about it as `maxsplit=1` rather
  than `keepends=1`).

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D12403

AFFECTED FILES
  mercurial/templatefilters.py

CHANGE DETAILS

diff --git a/mercurial/templatefilters.py b/mercurial/templatefilters.py
--- a/mercurial/templatefilters.py
+++ b/mercurial/templatefilters.py
@@ -269,7 +269,7 @@
 def firstline(text):
     """Any text. Returns the first line of text."""
     try:
-        return text.splitlines(True)[0].rstrip(b'\r\n')
+        return text.splitlines()[0]
     except IndexError:
         return b''
 



To: martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel


More information about the Mercurial-devel mailing list