Skip to content

Commit d31ea66

Browse files
Chad Granumjkeenan
authored andcommitted
cpan/Term-Table - Update to version 0.027
0.027 2025-11-14 10:04:51-08:00 America/Los_Angeles - No changes from trial 0.026 2025-11-12 20:02:15-08:00 America/Los_Angeles (TRIAL RELEASE) - Fix terminal size detection
1 parent ce96f1e commit d31ea66

File tree

12 files changed

+140
-43
lines changed

12 files changed

+140
-43
lines changed

MANIFEST

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2325,6 +2325,8 @@ cpan/Term-Table/t/Table.t Term-Table
23252325
cpan/Term-Table/t/Table/Cell.t Term-Table
23262326
cpan/Term-Table/t/Table/CellStack.t Term-Table
23272327
cpan/Term-Table/t/Table/LineBreak.t Term-Table
2328+
cpan/Term-Table/t/Term-ReadKey.t Term-Table
2329+
cpan/Term-Table/t/Term-Size-Any.t Term-Table
23282330
cpan/Test-Harness/bin/prove The prove harness utility
23292331
cpan/Test-Harness/lib/App/Prove.pm Gubbins for the prove utility
23302332
cpan/Test-Harness/lib/App/Prove/State.pm Gubbins for the prove utility

Porting/Maintainers.pl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,8 +1090,8 @@ package Maintainers;
10901090
},
10911091

10921092
'Term::Table' => {
1093-
'DISTRIBUTION' => 'EXODIST/Term-Table-0.025.tar.gz',
1094-
'SYNCINFO' => 'jkeenan on Sun Aug 31 22:13:35 2025',
1093+
'DISTRIBUTION' => 'EXODIST/Term-Table-0.027.tar.gz',
1094+
'SYNCINFO' => 'jkeenan on Sat Nov 15 21:20:44 2025',
10951095
'FILES' => q[cpan/Term-Table],
10961096
'EXCLUDED' => [
10971097
qw( appveyor.yml ),

cpan/Term-Table/lib/Term/Table.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package Term::Table;
22
use strict;
33
use warnings;
44

5-
our $VERSION = '0.025';
5+
our $VERSION = '0.027';
66

77
use Term::Table::Cell();
88

cpan/Term-Table/lib/Term/Table/Cell.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package Term::Table::Cell;
22
use strict;
33
use warnings;
44

5-
our $VERSION = '0.025';
5+
our $VERSION = '0.027';
66

77
use Term::Table::LineBreak();
88
use Term::Table::Util qw/uni_length/;

cpan/Term-Table/lib/Term/Table/CellStack.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package Term::Table::CellStack;
22
use strict;
33
use warnings;
44

5-
our $VERSION = '0.025';
5+
our $VERSION = '0.027';
66

77
use Term::Table::HashBase qw/-cells -idx/;
88

cpan/Term-Table/lib/Term/Table/HashBase.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package Term::Table::HashBase;
22
use strict;
33
use warnings;
44

5-
our $VERSION = '0.025';
5+
our $VERSION = '0.027';
66

77
#################################################################
88
# #

cpan/Term-Table/lib/Term/Table/LineBreak.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package Term::Table::LineBreak;
22
use strict;
33
use warnings;
44

5-
our $VERSION = '0.025';
5+
our $VERSION = '0.027';
66

77
use Carp qw/croak/;
88
use Scalar::Util qw/blessed/;

cpan/Term-Table/lib/Term/Table/Spacer.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package Term::Table::Spacer;
22
use strict;
33
use warnings;
44

5-
our $VERSION = '0.025';
5+
our $VERSION = '0.027';
66

77
sub new { bless {}, $_[0] }
88

cpan/Term-Table/lib/Term/Table/Util.pm

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,24 @@ package Term::Table::Util;
22
use strict;
33
use warnings;
44

5+
use List::Util qw/max/;
56
use Config qw/%Config/;
67

7-
our $VERSION = '0.025';
8+
our $VERSION = '0.027';
89

910
use base 'Exporter';
1011
our @EXPORT_OK = qw/term_size USE_GCS USE_TERM_READKEY USE_TERM_SIZE_ANY uni_length/;
1112

1213
sub DEFAULT_SIZE() { 80 }
1314

14-
my $IO;
15+
my @IO;
16+
my @TIO;
1517
BEGIN {
16-
open($IO, '>&', *STDOUT) or die "Could not clone STDOUT";
18+
for my $fh (\*STDOUT, \*STDERR, \*STDIN) {
19+
open(my $io, '>&', $fh) or next;
20+
push @IO => $io;
21+
push @TIO => $io if -t $io;
22+
}
1723
}
1824

1925
sub try(&) {
@@ -28,40 +34,44 @@ my ($tsa) = try { require Term::Size::Any; Term::Size::Any->import('chars') };
2834
my ($trk) = try { require Term::ReadKey };
2935
$trk &&= Term::ReadKey->can('GetTerminalSize');
3036

31-
if (!-t $IO) {
32-
*USE_TERM_READKEY = sub() { 0 };
33-
*USE_TERM_SIZE_ANY = sub() { 0 };
34-
*term_size = sub {
35-
return $ENV{TABLE_TERM_SIZE} if $ENV{TABLE_TERM_SIZE};
36-
return DEFAULT_SIZE;
37-
};
38-
}
39-
elsif ($tsa) {
37+
if ($tsa) {
4038
*USE_TERM_READKEY = sub() { 0 };
4139
*USE_TERM_SIZE_ANY = sub() { 1 };
4240
*_term_size = sub {
43-
my $size = chars($IO);
44-
return DEFAULT_SIZE if !$size;
45-
return DEFAULT_SIZE if $size < DEFAULT_SIZE;
41+
my $size = max map { chars($_) // DEFAULT_SIZE } @IO;
42+
43+
if (!$size || $size < DEFAULT_SIZE) {
44+
return $ENV{COLUMNS} if $ENV{COLUMNS} && $ENV{COLUMNS} > DEFAULT_SIZE;
45+
return DEFAULT_SIZE;
46+
}
47+
4648
return $size;
4749
};
4850
}
49-
elsif ($trk) {
51+
elsif ($trk && @TIO) {
5052
*USE_TERM_READKEY = sub() { 1 };
5153
*USE_TERM_SIZE_ANY = sub() { 0 };
5254
*_term_size = sub {
53-
my $total;
55+
my @totals;
5456
try {
5557
my @warnings;
5658
{
5759
local $SIG{__WARN__} = sub { push @warnings => @_ };
58-
($total) = Term::ReadKey::GetTerminalSize($IO);
60+
for my $io (@TIO) {
61+
my ($total) = Term::ReadKey::GetTerminalSize($io);
62+
push @totals => $total;
63+
}
5964
}
6065
@warnings = grep { $_ !~ m/Unable to get Terminal Size/ } @warnings;
6166
warn @warnings if @warnings;
6267
};
63-
return DEFAULT_SIZE if !$total;
64-
return DEFAULT_SIZE if $total < DEFAULT_SIZE;
68+
my $total = @totals ? max(@totals) : 0;
69+
70+
if (!$total || $total < DEFAULT_SIZE) {
71+
return $ENV{COLUMNS} if $ENV{COLUMNS} && $ENV{COLUMNS} > DEFAULT_SIZE;
72+
return DEFAULT_SIZE;
73+
}
74+
6575
return $total;
6676
};
6777
}
@@ -70,6 +80,7 @@ else {
7080
*USE_TERM_SIZE_ANY = sub() { 0 };
7181
*term_size = sub {
7282
return $ENV{TABLE_TERM_SIZE} if $ENV{TABLE_TERM_SIZE};
83+
return $ENV{COLUMNS} if $ENV{COLUMNS} && $ENV{COLUMNS} > DEFAULT_SIZE;
7384
return DEFAULT_SIZE;
7485
};
7586
}

cpan/Term-Table/t/Term-ReadKey.t

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# HARNESS-NO-PRELOAD
2+
#
3+
BEGIN {
4+
if (eval { require Test2::Tools::Tiny }) {
5+
print "# Using Test2::Tools::Tiny\n";
6+
Test2::Tools::Tiny->import();
7+
}
8+
else {
9+
print "1..0 # SKIP Test2::Tools::Tiny is not installed\n";
10+
exit(0);
11+
}
12+
13+
if (grep { -t $_ } *STDOUT, *STDERR, *STDIN) {
14+
print "# Found usable IO\n";
15+
}
16+
else {
17+
print "1..0 # SKIP No usable IO handles\n";
18+
exit(0);
19+
}
20+
21+
if (eval { require Term::ReadKey; Term::ReadKey->can('GetTerminalSize') }) {
22+
print "# Using Term::ReadKey\n";
23+
}
24+
else {
25+
print "1..0 # SKIP Term::ReadKey is not installed, or too old\n";
26+
exit(0);
27+
}
28+
29+
if (eval { require Devel::Hide }) {
30+
Devel::Hide->import('Term::Size::Any');
31+
}
32+
else {
33+
print "1..0 # SKIP Devel::Hide is not installed\n";
34+
exit(0);
35+
}
36+
}
37+
38+
use Term::Table::Util qw/USE_TERM_READKEY USE_TERM_SIZE_ANY term_size/;
39+
40+
ok(USE_TERM_READKEY, "Using Term::ReadKey");
41+
ok(!USE_TERM_SIZE_ANY, "Not using Term::Size::Any");
42+
43+
ok(term_size(), "Got terminal size");
44+
45+
done_testing;

0 commit comments

Comments
 (0)