From 1147bb29ec3e300cea56994ef62296419be5dc5a Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 10 Jan 2024 10:51:27 +0000 Subject: [PATCH] Bug 35681: Use ::Bootstrap version of FromANSI With the next iteration of HTML::FromANSI::Tiny we can add our own subclass to map ANSI strings to Bootstrap classes. This patch adds a local lib HTML::FromANSI::Tiny::Bootstrap module to do said mapping and then uses it in the installer. --- installer/install.pl | 11 +++--- lib/HTML/FromANSI/Tiny/Bootstrap.pm | 55 +++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 lib/HTML/FromANSI/Tiny/Bootstrap.pm diff --git a/installer/install.pl b/installer/install.pl index 3c75d08e20b..a7fc624ce69 100755 --- a/installer/install.pl +++ b/installer/install.pl @@ -23,7 +23,7 @@ use diagnostics; use C4::InstallAuth qw( get_template_and_user ); use CGI qw ( -utf8 ); use POSIX; -use HTML::FromANSI::Tiny; +use HTML::FromANSI::Tiny::Bootstrap; use C4::Context; use C4::Output qw( output_html_with_http_headers ); @@ -568,14 +568,17 @@ sub chk_log { #returns a logfile in $dir or - if that failed - in temp dir sub colorize { my ($report) = @_; - my $h = HTML::FromANSI::Tiny->new( - auto_reverse => 0, background => 'white', foreground => 'black', - inline_style => 1, no_plain_tags => 1 + my $h = HTML::FromANSI::Tiny::Bootstrap->new( + auto_reverse => 0, + background => 'white', + foreground => 'black', + no_plain_tags => 1 ); my @states = ( 'success', 'error' ); for my $state (@states) { for my $result ( @{ $report->{$state} } ) { + #@{ $result->{output} } = map { s/^\t+//; $h->html($_) } @{ $result->{output} }; for my $output ( @{ $result->{output} } ) { $output = $h->html($output); diff --git a/lib/HTML/FromANSI/Tiny/Bootstrap.pm b/lib/HTML/FromANSI/Tiny/Bootstrap.pm new file mode 100644 index 00000000000..1f4352adfba --- /dev/null +++ b/lib/HTML/FromANSI/Tiny/Bootstrap.pm @@ -0,0 +1,55 @@ +use strict; +use warnings; + +package HTML::FromANSI::Tiny::Bootstrap; + +use parent qw(HTML::FromANSI::Tiny); + +=head1 NAME + +HTML::FromANSI::Tiny::Bootstrap - Convert ANSI colored text to HTML with Bootstrap classes + +=head1 DESCRIPTION + +HTML::FromANSI::Tiny::Bootstrap is a module that extends HTML::FromANSI::Tiny to convert ANSI colored text to HTML with Bootstrap classes. It provides a mapping between ANSI color attributes and Bootstrap classes. + +=cut + +our %ATTR_TO_CLASS = ( + black => 'text-primary', + red => 'text-danger', + green => 'text-success', + yellow => 'text-warning', + blue => 'text-info', + magenta => '', + cyan => '', + white => 'text-muted', + on_black => 'bg-primary', + on_red => 'bg-danger', + on_green => 'bg-success', + on_yellow => 'bg-warning', + on_blue => 'bg-info', + on_magenta => '', + on_cyan => '', + on_white => '', +); + +=head1 METHODS + +=head2 attr_to_class($attr) + +Converts an ANSI color attribute to the corresponding Bootstrap class. + +=cut + +sub attr_to_class { + $ATTR_TO_CLASS{ $_[1] } || $_[1]; +} + +=head1 AUTHOR + +Martin Renvoize + +=cut + +1; -- 2.44.0