@@ -823,18 +823,21 @@ sub set_defaults {
823
823
# Borrowed from: https://www.perturb.org/display/1167_Perl_ANSI_colors.html
824
824
# String format: '115', '165_bold', '10_on_140', 'reset', 'on_173', 'red', 'white_on_blue'
825
825
sub color {
826
- my $str = shift ();
826
+ my ($str , $txt ) = @_ ;
827
+
828
+ # If we're NOT connected to a an interactive terminal don't do color
829
+ # if (-t STDOUT == 0) { return ''; }
827
830
828
831
# No string sent in, so we just reset
829
832
if (!length ($str ) || $str eq ' reset' ) { return " \e [0m" ; }
830
833
831
834
# Some predefined colors
832
- my %color_map = qw( red 160 blue 21 green 34 yellow 226 orange 214 purple 93 white 15 black 0) ;
835
+ my %color_map = qw( red 160 blue 27 green 34 yellow 226 orange 214 purple 93 white 15 black 0) ;
833
836
$str =~ s | ([A-Za-z]+)| $color_map {$1 } // $1 | eg ;
834
837
835
838
# Get foreground/background and any commands
836
- my ($fc ,$cmd ) = $str =~ / (\d + )?_?(\w +)?/g ;
837
- my ($bc ) = $str =~ / on_? (\d +) /g ;
839
+ my ($fc ,$cmd ) = $str =~ / ^ (\d {1,3} )?_?(\w +)?$ /g ;
840
+ my ($bc ) = $str =~ / on_(\d {1,3}) $ /g ;
838
841
839
842
# Some predefined commands
840
843
my %cmd_map = qw( bold 1 italic 3 underline 4 blink 5 inverse 7) ;
@@ -844,6 +847,7 @@ sub color {
844
847
if ($cmd_num ) { $ret .= " \e [${cmd_num} m" ; }
845
848
if (defined ($fc )) { $ret .= " \e [38;5;${fc} m" ; }
846
849
if (defined ($bc )) { $ret .= " \e [48;5;${bc} m" ; }
850
+ if ($txt ) { $ret .= $txt . " \e [0m" ; }
847
851
848
852
return $ret ;
849
853
}
0 commit comments