##// END OF EJS Templates
encoding: add 'leftside' argument into 'trim' to switch trimming side
FUJIWARA Katsunori -
r21861:b515c3a6 default
parent child Browse files
Show More
@@ -165,9 +165,12 b' def getcols(s, start, c):'
165 if colwidth(t) == c:
165 if colwidth(t) == c:
166 return t
166 return t
167
167
168 def trim(s, width, ellipsis=''):
168 def trim(s, width, ellipsis='', leftside=False):
169 """Trim string 's' to at most 'width' columns (including 'ellipsis').
169 """Trim string 's' to at most 'width' columns (including 'ellipsis').
170
170
171 If 'leftside' is True, left side of string 's' is trimmed.
172 'ellipsis' is always placed at trimmed side.
173
171 >>> ellipsis = '+++'
174 >>> ellipsis = '+++'
172 >>> from mercurial import encoding
175 >>> from mercurial import encoding
173 >>> encoding.encoding = 'utf-8'
176 >>> encoding.encoding = 'utf-8'
@@ -178,8 +181,12 b" def trim(s, width, ellipsis=''):"
178 1234567890
181 1234567890
179 >>> print trim(t, 8, ellipsis=ellipsis)
182 >>> print trim(t, 8, ellipsis=ellipsis)
180 12345+++
183 12345+++
184 >>> print trim(t, 8, ellipsis=ellipsis, leftside=True)
185 +++67890
181 >>> print trim(t, 8)
186 >>> print trim(t, 8)
182 12345678
187 12345678
188 >>> print trim(t, 8, leftside=True)
189 34567890
183 >>> print trim(t, 3, ellipsis=ellipsis)
190 >>> print trim(t, 3, ellipsis=ellipsis)
184 +++
191 +++
185 >>> print trim(t, 1, ellipsis=ellipsis)
192 >>> print trim(t, 1, ellipsis=ellipsis)
@@ -192,10 +199,16 b" def trim(s, width, ellipsis=''):"
192 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a
199 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a
193 >>> print trim(t, 8, ellipsis=ellipsis)
200 >>> print trim(t, 8, ellipsis=ellipsis)
194 \xe3\x81\x82\xe3\x81\x84+++
201 \xe3\x81\x82\xe3\x81\x84+++
202 >>> print trim(t, 8, ellipsis=ellipsis, leftside=True)
203 +++\xe3\x81\x88\xe3\x81\x8a
195 >>> print trim(t, 5)
204 >>> print trim(t, 5)
196 \xe3\x81\x82\xe3\x81\x84
205 \xe3\x81\x82\xe3\x81\x84
206 >>> print trim(t, 5, leftside=True)
207 \xe3\x81\x88\xe3\x81\x8a
197 >>> print trim(t, 4, ellipsis=ellipsis)
208 >>> print trim(t, 4, ellipsis=ellipsis)
198 +++
209 +++
210 >>> print trim(t, 4, ellipsis=ellipsis, leftside=True)
211 +++
199 >>> t = '\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa' # invalid byte sequence
212 >>> t = '\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa' # invalid byte sequence
200 >>> print trim(t, 12, ellipsis=ellipsis)
213 >>> print trim(t, 12, ellipsis=ellipsis)
201 \x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa
214 \x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa
@@ -203,8 +216,12 b" def trim(s, width, ellipsis=''):"
203 \x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa
216 \x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa
204 >>> print trim(t, 8, ellipsis=ellipsis)
217 >>> print trim(t, 8, ellipsis=ellipsis)
205 \x11\x22\x33\x44\x55+++
218 \x11\x22\x33\x44\x55+++
219 >>> print trim(t, 8, ellipsis=ellipsis, leftside=True)
220 +++\x66\x77\x88\x99\xaa
206 >>> print trim(t, 8)
221 >>> print trim(t, 8)
207 \x11\x22\x33\x44\x55\x66\x77\x88
222 \x11\x22\x33\x44\x55\x66\x77\x88
223 >>> print trim(t, 8, leftside=True)
224 \x33\x44\x55\x66\x77\x88\x99\xaa
208 >>> print trim(t, 3, ellipsis=ellipsis)
225 >>> print trim(t, 3, ellipsis=ellipsis)
209 +++
226 +++
210 >>> print trim(t, 1, ellipsis=ellipsis)
227 >>> print trim(t, 1, ellipsis=ellipsis)
@@ -218,6 +235,8 b" def trim(s, width, ellipsis=''):"
218 width -= len(ellipsis)
235 width -= len(ellipsis)
219 if width <= 0: # no enough room even for ellipsis
236 if width <= 0: # no enough room even for ellipsis
220 return ellipsis[:width + len(ellipsis)]
237 return ellipsis[:width + len(ellipsis)]
238 if leftside:
239 return ellipsis + s[-width:]
221 return s[:width] + ellipsis
240 return s[:width] + ellipsis
222
241
223 if ucolwidth(u) <= width: # trimming is not needed
242 if ucolwidth(u) <= width: # trimming is not needed
@@ -227,8 +246,12 b" def trim(s, width, ellipsis=''):"
227 if width <= 0: # no enough room even for ellipsis
246 if width <= 0: # no enough room even for ellipsis
228 return ellipsis[:width + len(ellipsis)]
247 return ellipsis[:width + len(ellipsis)]
229
248
230 uslice = lambda i: u[:-i]
249 if leftside:
231 concat = lambda s: s + ellipsis
250 uslice = lambda i: u[i:]
251 concat = lambda s: ellipsis + s
252 else:
253 uslice = lambda i: u[:-i]
254 concat = lambda s: s + ellipsis
232 for i in xrange(1, len(u)):
255 for i in xrange(1, len(u)):
233 usub = uslice(i)
256 usub = uslice(i)
234 if ucolwidth(usub) <= width:
257 if ucolwidth(usub) <= width:
General Comments 0
You need to be logged in to leave comments. Login now