|
17 | 17 | from collections import namedtuple |
18 | 18 | from collections.abc import Iterable, Sized |
19 | 19 | import dataclasses |
20 | | -from decimal import Decimal |
21 | 20 | from dataclasses import dataclass |
| 21 | +from decimal import Decimal |
22 | 22 | from functools import partial, reduce |
23 | 23 | from html import escape as htmlescape |
24 | 24 | import io |
@@ -333,6 +333,9 @@ def make_header_line(is_header, colwidths, colaligns): |
333 | 333 | _latex_row = DataRow("", "&", "\\\\", LATEX_ESCAPE_RULES) |
334 | 334 |
|
335 | 335 |
|
| 336 | +GITHUB_ESCAPE_RULES = {r"|": r"\|"} |
| 337 | + |
| 338 | + |
336 | 339 | def _rst_escape_first_column(rows, headers): |
337 | 340 | def escape_empty(val): |
338 | 341 | if isinstance(val, (str, bytes)) and not val.strip(): |
@@ -528,8 +531,8 @@ def escape_empty(val): |
528 | 531 | linebelowheader=_pipe_line_with_colons, |
529 | 532 | linebetweenrows=None, |
530 | 533 | linebelow=None, |
531 | | - headerrow=DataRow("|", "|", "|"), |
532 | | - datarow=DataRow("|", "|", "|"), |
| 534 | + headerrow=DataRow("|", "|", "|", GITHUB_ESCAPE_RULES), |
| 535 | + datarow=DataRow("|", "|", "|", GITHUB_ESCAPE_RULES), |
533 | 536 | padding=1, |
534 | 537 | with_header_hide=["lineabove"], |
535 | 538 | ), |
@@ -2515,16 +2518,23 @@ def _build_simple_row(padded_cells: list[list], rowfmt: DataRow) -> str: |
2515 | 2518 | escape_map: dict = rowfmt.escape_map |
2516 | 2519 |
|
2517 | 2520 | if escape_map: |
| 2521 | + |
2518 | 2522 | def escape_char(c): |
2519 | 2523 | return escape_map.get(c, c) |
| 2524 | + |
2520 | 2525 | escaped_cells = ["".join(map(escape_char, cell)) for cell in padded_cells] |
2521 | 2526 | else: |
2522 | 2527 | escaped_cells = padded_cells |
2523 | 2528 |
|
2524 | 2529 | return (begin + sep.join(escaped_cells) + end).rstrip() |
2525 | 2530 |
|
2526 | 2531 |
|
2527 | | -def _build_row(padded_cells: list[list], colwidths: list[int], colaligns: list[str], rowfmt: Union[DataRow, Callable]) -> str: |
| 2532 | +def _build_row( |
| 2533 | + padded_cells: list[list], |
| 2534 | + colwidths: list[int], |
| 2535 | + colaligns: list[str], |
| 2536 | + rowfmt: Union[DataRow, Callable], |
| 2537 | +) -> str: |
2528 | 2538 | "Return a string which represents a row of data cells." |
2529 | 2539 | if not rowfmt: |
2530 | 2540 | return None |
|
0 commit comments