NAME

Tags::HTML::Page::Begin - Tags helper for HTML page begin.

SYNOPSIS

use Tags::HTML::Page::Begin;

my $obj = Tags::HTML::Page::Begin->new(%params);
$obj->process;

METHODS

new

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

Constructor.

  • application-name

    Application name.

    Default name is undef.

  • author

    Author name.

    Default value is undef.

  • base_href

    Base link (<base href="https://skim.cz" />.

    Default value is undef.

  • base_target

    Base target. It's used in if 'base_href' parameter exists.

    Default value is undef.

  • css

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

    Default value is undef.

  • css_init

    Initialization of CSS.

    Default value is:

    * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
    }

    CSS is handled by _process_css() method in this module, which is abstract method of Tags::HTML.

  • css_src

    List of CSS link structures.

    Structure is something like:
    {
      'link' => '/foo.css',
      'media' => 'screen',
    }

    Default value is [].

  • charset

    Document character set.

    Parameter is required.

    Default value is 'UTF-8'.

  • description

    Document description.

    Default value is undef.

  • doctype

    Document doctype string.

    Default value is '<!DOCTYPE html>'.

  • favicon

    Favorite icon image link. Supported images are 'ICO', 'PNG', 'GIF', 'SVG' and 'JPG' files.

    Default value is undef.

  • generator

    Generator value.

    Default value is 'Perl module: Tags::HTML::Page::Begin, Version: __MODULE_VERSION__'.

  • html_lang

    HTML element lang attribute. Creates html element in form: <html lang="en">

    Default value is 'en'.

  • http_equiv_content_type

    http-equiv content-type meta element. If defined creates meta in form: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> Unless defined creates meta in form: <meta charset="UTF-8" />

    Defaut value is 'text/html'.

  • keywords

    Document keywords.

    Default value is undef.

  • lang

    Hash with language information for output. Keys are: 'title'.

    Default value is reference to hash with these value: 'title' => 'Page title'

  • refresh

    Page refresh time in seconds.

    Default value is undef.

  • robots

    Robots meta.

    Default value is undef.

  • rss

    RSS link.

    Default value is undef.

  • script_js

    List of JavaScript scripts.

    Default value is reference to blank array.

  • script_js_src

    List of JavaScript links.

    Default value is reference to blank array.

  • tags

    'Tags::Output' object.

    It's required.

    Default value is undef.

  • viewport

    Document viewport.

    It's optional.

    Default value is 'width=device-width, initial-scale=1.0'.

process

$obj->process;

Process Tags structure for output.

Returns undef.

ERRORS

new():
        Parameter 'css' must be a 'CSS::Struct::Output::*' class.
        Parameter 'css_src' must be a array.
        Parameter 'css_src' must be a array of hash structures.
        Parameter 'css_src' must be a array of hash structures with 'media' and 'link' keys.
        Parameter 'charset' is required.
        Parameter 'script_js' must be a array.
        Parameter 'script_js_src' must be a array.
        Parameter 'tags' must be a 'Tags::Output::*' class.
        From Class::Utils::set_params():
                Unknown parameter '%s'.

EXAMPLE1

use strict;
use warnings;

use CSS::Struct::Output::Indent;
use Tags::HTML::Page::Begin;
use Tags::HTML::Page::End;
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,
        'tags' => $tags,
);
my $end = Tags::HTML::Page::End->new(
        'tags' => $tags,
);

# Process page
$begin->process_css;
$css->put(
       ['s', 'div'],
       ['d', 'color', 'red'],
       ['d', 'background-color', 'black'],
       ['e'],
);
$begin->process;
$tags->put(
       ['b', 'div'],
       ['d', 'Hello world!'],
       ['e', 'div'],
);
$end->process;

# Print out.
print $tags->flush;

# Output like:
# <!DOCTYPE html>
# <html lang="en">
#   <head>
#     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
#     <meta name="generator" content=
#       "Perl module: Tags::HTML::Page::Begin, Version: 0.16" />
#     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
#     <title>
#       Page title
#     </title>
#     <style type="text/css">
# * {
#         box-sizing: border-box;
#         margin: 0;
#         padding: 0;
# }
# div {
#         color: red;
#         background-color: black;
# }
# </style>
#   </head>
#   <body>
#     <div>
#       Hello world!
#     </div>
#   </body>
# </html>

DEPENDENCIES

Class::Utils, Error::Pure, List::Util, Readonly, Tags::HTML.

SEE ALSO

Tags::HTML::Page::End

Tags helper for HTML page end.

REPOSITORY

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

AUTHOR

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

http://skim.cz

LICENSE AND COPYRIGHT

© Michal Josef Špaček 2020-2024

BSD 2-Clause License

VERSION

0.17