Lætitia Avrot wrote: > But as Vik said earlier, maybe it's not worth it to provide a markdown > output as pandoc can generate the markdown from the HTML output. > And if you need the markdown output to generate HTML why don't you use the > HTML output ?
The round-trip through pandoc does not do any miracle. The end result is readable to the human eye but structurally broken. If converted back to html, it's no longer a table. Anyway I tend to agree with Vik on this: "Markdown isn't standardized enough to support and please everyone." BTW github has independently started to support '|' in the cells by accepting the quoted version '\|' : https://help.github.com/articles/organizing-information-with-tables/ Now that we have csv as an output format, we can suggest custom csv-to-markdown converters to produce markdown rather than implementing one particular flavor of markdown in psql, or several flavors through flags. The popular script languages have solid CSV parsers that make this relatively easy and safe. Personally I'd use Perl with something like below, which looks short/simple enough to be shared on wiki.postgresql.org, along with versions in other languages. #!/usr/bin/perl # Usage # inside psql: # \pset format csv # \o |csvtomarkdown >/tmp/output.md # SQL commands... # \o # or psql --csv -c "...query..." | csvtomarkdown use Text::CSV; use open qw( :std :encoding(UTF-8) ); my $csv = Text::CSV->new({ binary => 1, eol => $/ }); sub do_format { # customize to your needs s/&/&/g; s/</</g; s/>/>/g; s/\n/<br>/g; s/\|/|/g; return $_; } my $header = $csv->getline(STDIN); for (@{$header}) { $_ = do_format($_); } print join ('|', @{$header}), "\n"; print join ('|', map { "---" } @{$header}), "\n"; while (my $row = $csv->getline(STDIN)) { my @contents = map { do_format($_) } @{$row}; print join('|', @contents), "\n"; } Best regards, -- Daniel Vérité PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite