diff --git a/pytools/__init__.py b/pytools/__init__.py index 8956a7325bb8c8e004274ab1b3b27c7d55f11aff..394bb8730b45b6ce86e4a5c44473081083cc8bea 100644 --- a/pytools/__init__.py +++ b/pytools/__init__.py @@ -1527,16 +1527,19 @@ class Table: .. doctest :: >>> tbl = Table(alignments=['l', 'r']) - >>> tbl.add_row([1, 2]) + >>> tbl.add_row([1, '|']) >>> tbl.add_row([10, 20]) >>> s = tbl.github_markdown().splitlines() - >>> assert s[0] == "1 | 2" + >>> assert s[0] == "1 | \|" >>> assert s[1] == ":--|---:" >>> assert s[2] == "10 | 20" """ - columns = len(self.rows[0]) - col_widths = [max(len(row[i]) for row in self.rows) + # Pipe symbols ('|') must be replaced + rows = [[w.replace('|', '\\|') for w in r] for r in self.rows] + + columns = len(rows[0]) + col_widths = [max(len(row[i]) for row in rows) for i in range(columns)] alignments = self.alignments @@ -1549,7 +1552,7 @@ class Table: else cell.ljust(col_width) if align == "l" else cell.rjust(col_width) for cell, col_width, align in zip(row, col_widths, alignments)]) - for row in self.rows] + for row in rows] lines[1:1] = ["|".join( ":" + "-" * (col_width - 1 + (i > 0)) + ":" if align == "c" else ":" + "-" * (col_width + (i > 0)) if align == "l"