Skip to content

fix: escape pipes and collapse newlines in markdown table cells - #30

Merged
DhanushNehru merged 1 commit into
DevelopersGlobal:mainfrom
bfs2021:fix/escape-pipes-table-cells
Nov 6, 2026
Merged

DhanushNehru merged 1 commit into
DevelopersGlobal:mainfrom
bfs2021:fix/escape-pipes-table-cells

Conversation

@bfs2021

@bfs2021 bfs2021 commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Problem

report.go writes URLs and stack evidence details straight into the pipe-delimited markdown tables, so a single | in a page title, a URL query string or a header value starts a new column and breaks the row (#12).

Root cause

WriteMarkdown interpolated values into the summary, accessibility and stack tables without escaping. A literal | in any free-text value collides with the table delimiter, and a newline inside a value starts a new row.

Fix

Add a cell() helper that escapes | as \| and collapses \r\n/\n/\r to spaces, and write every string value in the three tables (summary, accessibility, stack) through it. Cells without pipes or newlines render exactly as before.

Testing

  • New report_test.go: a page whose URL and title carry | plus a stack finding whose evidence detail carries | and \r\n renders one intact escaped row (\|), and every data row keeps its expected number of unescaped pipes; a plain page still renders the identical row.
  • go test ./... all packages pass; go vet clean.

URLs and stack evidence details went into the summary, accessibility and
stack tables unescaped, so a single | in a page title or header value
started a new column and broke the row (DevelopersGlobal#12). Write every value in those
tables through cell(), which escapes | as \| and collapses newlines.
@DhanushNehru
DhanushNehru merged commit db42ade into DevelopersGlobal:main Nov 6, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants