Re: Markdown format output for psql, design notes - Mailing list pgsql-hackers

From Lætitia Avrot
Subject Re: Markdown format output for psql, design notes
Date
Msg-id CAB_COdjc1jkaRYxQh0eWHMPCBVVwMSmBo7WgNbioya7J+fQxXA@mail.gmail.com
Whole thread Raw
In response to Re: Markdown format output for psql, design notes  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-hackers
If I sum it up,  we're at 2 against trying to write such a patch and one for (with some modifications about which markdown format to implement).

Anyone else wants to join the vote? 

Cheers, 

Lætitia 

Le dim. 2 déc. 2018 à 05:11, Pavel Stehule <pavel.stehule@gmail.com> a écrit :


so 1. 12. 2018 v 22:11 odesílatel Daniel Verite <daniel@manitou-mail.org> napsal:
        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.

I agree with you about importance of CSV. On second hand, I don't see a reason why we should not to support some very popular markdown formats - although there can be a discussion - which

maybe github and JIRA, CONFLUENCE

Regards

Pavel


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/&/&amp;/g;
  s/</&lt;/g;
  s/>/&gt;/g;
  s/\n/<br>/g;
  s/\|/&#x7C;/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

pgsql-hackers by date:

Previous
From: Dmitry Dolgov
Date:
Subject: Re: [HACKERS] Can ICU be used for a database's default sort order?
Next
From: didier
Date:
Subject: [proposal] Add an option for returning SQLSTATE in psql error message