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