The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Tags::HTML::Messages - Tags helper for HTML messages.

SYNOPSIS

 use Tags::HTML::Messages;

 my $obj = Tags::HTML::Messages->new(%params);
 $obj->process($message_ar);
 $obj->process_css($type, $color);

METHODS

new

 my $obj = Tags::HTML::Messages->new(%params);

Constructor.

  • css

    'CSS::Struct::Output' object for process_css processing.

    Default value is undef.

  • css_messages

    CSS class for main messages div block.

    Default value is 'messages'.

  • flag_no_messages

    Flag for no messages printing.

    Possible values:

     0 - Print nothing
     1 - Print message box with 'No messages.' text.

    Default value is 1.

  • tags

    'Tags::Output' object.

    Default value is undef.

process

 $obj->process($message_ar);

Process Tags structure for output.

Reference to array with message objects $message_ar must be a instance of Data::Message::Simple object.

Returns undef.

process_css

 $obj->process_css($message_types_hr);

Process CSS::Struct structure for output.

Variable $message_type_hr is reference to hash with keys for message type and value for color in CSS style. Possible message types are info and error now. Types are defined in Data::Message::Simple.

Returns undef.

ERRORS

 new():
         From Class::Utils::set_params():
                 Unknown parameter '%s'.
         Parameter 'css' must be a 'CSS::Struct::Output::*' class.
         Parameter 'tags' must be a 'Tags::Output::*' class.

 process():
         Bad list of messages.
         Bad message data object.

 process_css():
         Message types must be a hash reference.

EXAMPLE1

 use strict;
 use warnings;

 use CSS::Struct::Output::Indent;
 use Data::Message::Simple;
 use Tags::HTML::Page::Begin;
 use Tags::HTML::Page::End;
 use Tags::HTML::Messages;
 use Tags::Output::Indent;

 # Object.
 my $tags = Tags::Output::Indent->new(
         'preserved' => ['style'],
         'xml' => 1,
 );
 my $css = CSS::Struct::Output::Indent->new;
 my $begin = Tags::HTML::Page::Begin->new(
         'css' => $css,
         'lang' => {
                 'title' => 'Tags::HTML::Messages example',
         },
         'generator' => 'Tags::HTML::Messages',
         'tags' => $tags,
 );
 my $end = Tags::HTML::Page::End->new(
         'tags' => $tags,
 );
 my $messages = Tags::HTML::Messages->new(
         'css' => $css,
         'tags' => $tags,
 );

 # Error structure.
 my $message_ar = [
         Data::Message::Simple->new(
                 'text' => 'Error #1',
                 'type' => 'error',
         ),
         Data::Message::Simple->new(
                 'text' => 'Error #2',
                 'type' => 'error',
         ),
         Data::Message::Simple->new(
                 'lang' => 'en',
                 'text' => 'Ok #1',
         ),
         Data::Message::Simple->new(
                 'text' => 'Ok #2',
         ),
 ];

 # Process page.
 $messages->process_css({
         'error' => 'red',
         'info' => 'green',
 });
 $begin->process;
 $messages->process($message_ar);
 $end->process;

 # Print out.
 print $tags->flush;

 # Output:
 # <!DOCTYPE html>
 # <html lang="en">
 #   <head>
 #     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 #     <meta name="generator" content="Tags::HTML::Messages" />
 #     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 #     <title>
 #       Tags::HTML::Messages example
 #     </title>
 #     <style type="text/css">
 # .error {
 #         color: red;
 # }
 # .info {
 #         color: green;
 # }
 # </style>
 #   </head>
 #   <body>
 #     <div class="messages">
 #       <span class="error">
 #         Error #1
 #       </span>
 #       <br />
 #       <span class="error">
 #         Error #2
 #       </span>
 #       <br />
 #       <span class="info" lang="en">
 #         Ok #1
 #       </span>
 #       <br />
 #       <span class="info">
 #         Ok #2
 #       </span>
 #     </div>
 #   </body>
 # </html>

DEPENDENCIES

Class::Utils, Error::Pure, Scalar::Util, Tags::HTML.

REPOSITORY

https://github.com/michal-josef-spacek/Tags-HTML-Messages

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© Michal Josef Špaček 2020-2023

BSD 2-Clause License

VERSION

0.09