mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix text builder did not respect wide/fullwidth charactors for table layout.
This commit is contained in:
parent
529e45a980
commit
b8296ad11e
@ -393,7 +393,7 @@ class TextTranslator(nodes.NodeVisitor):
|
|||||||
for i, cell in enumerate(line):
|
for i, cell in enumerate(line):
|
||||||
par = my_wrap(cell, width=colwidths[i])
|
par = my_wrap(cell, width=colwidths[i])
|
||||||
if par:
|
if par:
|
||||||
maxwidth = max(map(len, par))
|
maxwidth = max(map(column_width, par))
|
||||||
else:
|
else:
|
||||||
maxwidth = 0
|
maxwidth = 0
|
||||||
realwidths[i] = max(realwidths[i], maxwidth)
|
realwidths[i] = max(realwidths[i], maxwidth)
|
||||||
@ -413,7 +413,9 @@ class TextTranslator(nodes.NodeVisitor):
|
|||||||
out = ['|']
|
out = ['|']
|
||||||
for i, cell in enumerate(line):
|
for i, cell in enumerate(line):
|
||||||
if cell:
|
if cell:
|
||||||
out.append(' ' + cell.ljust(realwidths[i]+1))
|
adjust_len = len(cell) - column_width(cell)
|
||||||
|
out.append(' ' + cell.ljust(
|
||||||
|
realwidths[i] + 1 + adjust_len))
|
||||||
else:
|
else:
|
||||||
out.append(' ' * (realwidths[i] + 2))
|
out.append(' ' * (realwidths[i] + 2))
|
||||||
out.append('|')
|
out.append('|')
|
||||||
|
@ -42,3 +42,24 @@ def test_multibyte_title_line(app):
|
|||||||
expect_underline = underline.replace('=', '*')
|
expect_underline = underline.replace('=', '*')
|
||||||
result_underline = result.splitlines()[2].strip()
|
result_underline = result.splitlines()[2].strip()
|
||||||
assert expect_underline == result_underline
|
assert expect_underline == result_underline
|
||||||
|
|
||||||
|
|
||||||
|
@with_text_app()
|
||||||
|
def test_multibyte_table(app):
|
||||||
|
text = u'\u65e5\u672c\u8a9e'
|
||||||
|
contents = (u"\n.. list-table::"
|
||||||
|
"\n"
|
||||||
|
"\n - - spam"
|
||||||
|
"\n - egg"
|
||||||
|
"\n"
|
||||||
|
"\n - - %(text)s"
|
||||||
|
"\n - %(text)s"
|
||||||
|
"\n" % locals())
|
||||||
|
|
||||||
|
(app.srcdir / 'contents.rst').write_text(contents, encoding='utf-8')
|
||||||
|
app.builder.build_all()
|
||||||
|
result = (app.outdir / 'contents.txt').text(encoding='utf-8')
|
||||||
|
|
||||||
|
lines = [line.strip() for line in result.splitlines() if line.strip()]
|
||||||
|
line_widths = [column_width(line) for line in lines]
|
||||||
|
assert len(set(line_widths)) == 1 # same widths
|
||||||
|
Loading…
Reference in New Issue
Block a user