[PATCH STABLE] churn: compute padding with unicode strings

Isaac Jurado diptongo at gmail.com
Sun Apr 20 09:18:49 CDT 2014


El 20/04/2014 15:36, "Yuya Nishihara" <yuya at tcha.org> escribió:
>
> On Sun, 20 Apr 2014 01:03:25 +0200, Isaac Jurado wrote:
> > # HG changeset patch
> > # User Isaac Jurado <diptongo at gmail.com>
> > # Date 1397913085 -7200
> > #      Sat Apr 19 15:11:25 2014 +0200
> > # Branch stable
> > # Node ID 66336e9c96377ca6e48f54d33390c1bcd24b209d
> > # Parent  d924e387604f4a1b90469de773517841eba40c80
> > churn: compute padding with unicode strings
> >
> > Most UTF-8 aware terminals convert multibyte sequences into a single
displayed
> > characters.  Because the first column is padded by counting bytes, the
second
> > column is not perfectly aligned in the presence of non ASCII characters.
> >
> > diff --git a/hgext/churn.py b/hgext/churn.py
> > --- a/hgext/churn.py
> > +++ b/hgext/churn.py
> > @@ -10,6 +10,7 @@
> >
> >  from mercurial.i18n import _
> >  from mercurial import patch, cmdutil, scmutil, util, templater,
commands
> > +from mercurial import encoding
> >  import os
> >  import time, datetime
> >
> > @@ -124,7 +125,7 @@
> >      Aliases will be split from the rightmost "=".
> >      '''
> >      def pad(s, l):
> > -        return (s + " " * l)[:l]
> > +        return (s.decode("UTF-8") + u" " *
l)[:l].encode(encoding.encoding)
>
> It seems "s" isn't a utf8 bytes because it is a template output.  And
> encoding.colwidth() will give more accurate result.
>
> http://mercurial.selenic.com/wiki/EncodingStrategy#Functions

You're right.  I didn't understand completely the functions in the encoding
module.  I'll check de wiki entry and take a deeper look.  Will resend
later today.

Thanks a lot for the review.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20140420/b582b233/attachment.html>


More information about the Mercurial-devel mailing list