[pve-devel] [RFC PATCH common] cli: prettify tables even more

Wolfgang Bumiller w.bumiller at proxmox.com
Thu Aug 22 12:08:27 CEST 2019


On Wed, Aug 21, 2019 at 09:35:56PM +0200, Dietmar Maurer wrote:
> Are your sure common terminals support those characters?
> 
> They did not when I tested ...

Curious, when using utf-8 encoding for those characters I wouldn't see
how these characters would be any more special than any other?
In any case, tested urxvt, terminator, xfce4-terminal, gnome-terminal,
lxterminal.
Also note that all those symbols already existed in the extended ascii set,
codes 181, 198 and 216, and yes, those do show up correctly in dosbox ;-)

> > On 21 August 2019 14:33 Wolfgang Bumiller <w.bumiller at proxmox.com> wrote:
> > 
> >  
> > Separate the header with a double line.
> > 
> > Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
> > ---
> >  src/PVE/CLIFormatter.pm | 18 +++++++++++++++++-
> >  1 file changed, 17 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/PVE/CLIFormatter.pm b/src/PVE/CLIFormatter.pm
> > index 84dbed1..0e9cbe6 100644
> > --- a/src/PVE/CLIFormatter.pm
> > +++ b/src/PVE/CLIFormatter.pm
> > @@ -186,6 +186,7 @@ sub print_text_table {
> >      my $borderstring_m = '';
> >      my $borderstring_b = '';
> >      my $borderstring_t = '';
> > +    my $borderstring_h = '';
> >      my $formatstring = '';
> >  
> >      my $column_count = scalar(@$props_to_print);
> > @@ -255,41 +256,49 @@ sub print_text_table {
> >  		if ($utf8) {
> >  		    $formatstring .= "│ %$alignstr${cutoff}s │";
> >  		    $borderstring_t .= "┌─" . ('─' x $cutoff) . "─┐";
> > +		    $borderstring_h .= "╞═" . ('═' x $cutoff) . '═╡';
> >  		    $borderstring_m .= "├─" . ('─' x $cutoff) . "─┤";
> >  		    $borderstring_b .= "└─" . ('─' x $cutoff) . "─┘";
> >  		} else {
> >  		    $formatstring .= "| %$alignstr${cutoff}s |";
> >  		    $borderstring_m .= "+-" . ('-' x $cutoff) . "-+";
> > +		    $borderstring_h .= "+=" . ('=' x $cutoff) . '=';
> >  		}
> >  	    } elsif ($i == 0) {
> >  		if ($utf8) {
> >  		    $formatstring .= "│ %$alignstr${cutoff}s ";
> >  		    $borderstring_t .= "┌─" . ('─' x $cutoff) . '─';
> > +		    $borderstring_h .= "╞═" . ('═' x $cutoff) . '═';
> >  		    $borderstring_m .= "├─" . ('─' x $cutoff) . '─';
> >  		    $borderstring_b .= "└─" . ('─' x $cutoff) . '─';
> >  		} else {
> >  		    $formatstring .= "| %$alignstr${cutoff}s ";
> >  		    $borderstring_m .= "+-" . ('-' x $cutoff) . '-';
> > +		    $borderstring_h .= "+=" . ('=' x $cutoff) . '=';
> >  		}
> >  	    } elsif ($i == ($column_count - 1)) {
> >  		if ($utf8) {
> >  		    $formatstring .= "│ %$alignstr${cutoff}s │";
> >  		    $borderstring_t .= "┬─" . ('─' x $cutoff) . "─┐";
> > +		    $borderstring_h .= "╪═" . ('═' x $cutoff) . '═╡';
> >  		    $borderstring_m .= "┼─" . ('─' x $cutoff) . "─┤";
> >  		    $borderstring_b .= "┴─" . ('─' x $cutoff) . "─┘";
> >  		} else {
> >  		    $formatstring .= "| %$alignstr${cutoff}s |";
> >  		    $borderstring_m .= "+-" . ('-' x $cutoff) . "-+";
> > +		    $borderstring_h .= "+=" . ('=' x $cutoff) . "=+";
> >  		}
> >  	    } else {
> >  		if ($utf8) {
> >  		    $formatstring .= "│ %$alignstr${cutoff}s ";
> >  		    $borderstring_t .= "┬─" . ('─' x $cutoff) . '─';
> > +		    $borderstring_h .= "╪═" . ('═' x $cutoff) . '═';
> >  		    $borderstring_m .= "┼─" . ('─' x $cutoff) . '─';
> >  		    $borderstring_b .= "┴─" . ('─' x $cutoff) . '─';
> >  		} else {
> >  		    $formatstring .= "| %$alignstr${cutoff}s ";
> >  		    $borderstring_m .= "+-" . ('-' x $cutoff) . '-';
> > +		    $borderstring_h .= "+=" . ('=' x $cutoff) . '=';
> >  		}
> >  	    }
> >  	} else {
> > @@ -313,15 +322,22 @@ sub print_text_table {
> >  
> >      $writeln->($borderstring_t) if $border;
> >  
> > +    my $borderstring_sep;
> >      if ($header) {
> >  	my $text = sprintf $formatstring, map { $colopts->{$_}->{title} } @$props_to_print;
> >  	$writeln->($text);
> > +	$borderstring_sep = $borderstring_h;
> > +    } else {
> > +	$borderstring_sep = $borderstring_m;
> >      }
> >  
> >      for (my $i = 0; $i < scalar(@$tabledata); $i++) {
> >  	my $coldata = $tabledata->[$i];
> >  
> > -	$writeln->($borderstring_m) if $border && ($i != 0 || $header);
> > +	if ($border && ($i != 0 || $header)) {
> > +	    $writeln->($borderstring_sep);
> > +	    $borderstring_sep = $borderstring_m;
> > +	}
> >  
> >  	for (my $i = 0; $i < $coldata->{height}; $i++) {
> >  
> > -- 
> > 2.20.1
> > 
> > 
> > _______________________________________________
> > pve-devel mailing list
> > pve-devel at pve.proxmox.com
> > https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel



More information about the pve-devel mailing list