Move some calculations into a separate function
Also moves non-printable character translation *before* width calculations which is correct.
This commit is contained in:
parent
3779ec5b29
commit
2656953f24
|
@ -313,6 +313,8 @@ class Renderer(object):
|
||||||
|
|
||||||
current_width = 0
|
current_width = 0
|
||||||
|
|
||||||
|
self._prepare_segments(segments, output_width or width)
|
||||||
|
|
||||||
if not width:
|
if not width:
|
||||||
# No width specified, so we don’t need to crop or pad anything
|
# No width specified, so we don’t need to crop or pad anything
|
||||||
if output_width:
|
if output_width:
|
||||||
|
@ -376,6 +378,15 @@ class Renderer(object):
|
||||||
|
|
||||||
return construct_returned_value(rendered_highlighted, segments, current_width, output_raw, output_width)
|
return construct_returned_value(rendered_highlighted, segments, current_width, output_raw, output_width)
|
||||||
|
|
||||||
|
def _prepare_segments(self, segments, calculate_contents_len):
|
||||||
|
'''Translate non-printable characters and calculate segment width
|
||||||
|
'''
|
||||||
|
for segment in segments:
|
||||||
|
segment['contents'] = translate_np(segment['contents'])
|
||||||
|
if calculate_contents_len:
|
||||||
|
for segment in segments:
|
||||||
|
segment['_contents_len'] = self.strwidth(segment['contents'])
|
||||||
|
|
||||||
def _render_length(self, theme, segments, divider_widths):
|
def _render_length(self, theme, segments, divider_widths):
|
||||||
'''Update segments lengths and return them
|
'''Update segments lengths and return them
|
||||||
'''
|
'''
|
||||||
|
@ -384,9 +395,6 @@ class Renderer(object):
|
||||||
divider_spaces = theme.get_spaces()
|
divider_spaces = theme.get_spaces()
|
||||||
for index, segment in enumerate(segments):
|
for index, segment in enumerate(segments):
|
||||||
side = segment['side']
|
side = segment['side']
|
||||||
if segment['_contents_len'] is None:
|
|
||||||
segment_len = segment['_contents_len'] = self.strwidth(segment['contents'])
|
|
||||||
else:
|
|
||||||
segment_len = segment['_contents_len']
|
segment_len = segment['_contents_len']
|
||||||
|
|
||||||
prev_segment = segments[index - 1] if index > 0 else theme.EMPTY_SEGMENT
|
prev_segment = segments[index - 1] if index > 0 else theme.EMPTY_SEGMENT
|
||||||
|
@ -438,8 +446,6 @@ class Renderer(object):
|
||||||
contents_highlighted = ''
|
contents_highlighted = ''
|
||||||
draw_divider = segment['draw_' + divider_type + '_divider']
|
draw_divider = segment['draw_' + divider_type + '_divider']
|
||||||
|
|
||||||
contents_raw = translate_np(contents_raw)
|
|
||||||
|
|
||||||
# XXX Make sure self.hl() calls are called in the same order
|
# XXX Make sure self.hl() calls are called in the same order
|
||||||
# segments are displayed. This is needed for Vim renderer to work.
|
# segments are displayed. This is needed for Vim renderer to work.
|
||||||
if draw_divider:
|
if draw_divider:
|
||||||
|
|
Loading…
Reference in New Issue