Mercurial > repos > cpt > cpt_psm_comparison_table
diff lib/CPT/Report/HTML.pm @ 1:f093e08f21f3 draft default tip
planemo upload commit 94b0cd1fff0826c6db3e7dc0c91c0c5a8be8bb0c
author | cpt |
---|---|
date | Mon, 05 Jun 2023 02:47:24 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/CPT/Report/HTML.pm Mon Jun 05 02:47:24 2023 +0000 @@ -0,0 +1,165 @@ +package CPT::Report::HTML; +no warnings; +use Moose; +use Carp; +with 'CPT::Report'; +use CGI; + +has cgi => ( + is => 'rw', + isa => 'Any', + default => sub { + CGI->new(); + }, + # other attributes +); + +sub header { + my ($self) = @_; + return $self->cgi()->start_html( + -style => { -src => ['http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css','http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.min.css'] } + ); +} + +sub footer{ + my ($self) = @_; + return $self->cgi()->end_html(); +} +sub h1{ + my ($self, $addition) = @_; + $self->a($self->cgi()->h1($addition)); +} +sub h2{ + my ($self, $addition) = @_; + $self->a($self->cgi()->h2($addition)); +} +sub h3{ + my ($self, $addition) = @_; + $self->a($self->cgi()->h3($addition)); +} +sub h4{ + my ($self, $addition) = @_; + $self->a($self->cgi()->h4($addition)); +} +sub h5{ + my ($self, $addition) = @_; + $self->a($self->cgi()->h5($addition)); +} +sub h6{ + my ($self, $addition) = @_; + $self->a($self->cgi()->h6($addition)); +} +sub p{ + my ($self, $addition) = @_; + $self->a($self->cgi()->p($addition)); +} +sub b{ + my ($self, $addition) = @_; + $self->a($self->cgi()->b($addition)); +} + +sub finalize_table{ + my ($self) = @_; + my @td; + if(defined $self->_table_header() && scalar @{$self->_table_header()} > 0 ){ + push(@td, $self->cgi->th($self->_table_header())); + } + foreach(@{$self->_table_data()}){ + push(@td, $self->cgi->td($_)); + } + + $self->a($self->cgi()->table( + {-class => "table table-striped"}, + $self->cgi->Tr(\@td) + ) + ); + + # Reset for next usage + $self->_table_header([]); + $self->_table_data([]); +} + +has _table_header => ( + is => 'rw', + isa => 'ArrayRef', +); +has _table_data => ( + is => 'rw', + isa => 'ArrayRef', + default => sub { [] }, +); + + +sub table_header { + my ($self, @values) = @_; + $self->_table_header(\@values); +} + +sub table_row { + my ($self, @values) = @_; + my @current = @{$self->_table_data()}; + push(@current, \@values); + $self->_table_data(\@current); +} + +sub list_start { + my ($self, $type) = @_; + if($type ne 'number' && $type ne 'bullet'){ + carp 'Must use number or bullet as list type'; + } + if($self->_list_type() eq 'number'){ + $self->a('<ol>'); + }else{ + $self->a('<ul>'); + } + $self->_list_type($type); +} + +sub list_end { + my ($self) = @_; + if($self->_list_type() eq 'number'){ + $self->a('</ol>'); + }else{ + $self->a('</ul>'); + } +} + +sub list_element { + my ($self, $element_text) = @_; + $element_text =~ s{&}{&}gso; + $element_text =~ s{<}{<}gso; + $element_text =~ s{>}{>}gso; + $element_text =~ s{"}{"}gso; + $self->a(sprintf('<li>%s</li>', $element_text)); +} + +no Moose; +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +CPT::Report::HTML + +=head1 VERSION + +version 1.99.4 + +=head1 AUTHOR + +Eric Rasche <rasche.eric@yandex.ru> + +=head1 COPYRIGHT AND LICENSE + +This software is Copyright (c) 2014 by Eric Rasche. + +This is free software, licensed under: + + The GNU General Public License, Version 3, June 2007 + +=cut