NAME Tags::HTML - Tags helper abstract class. SYNOPSIS use Tags::HTML; my $obj = Tags::HTML->new(%params); $obj->cleanup(@params); $obj->init(@params); $obj->process; $obj->process_css; METHODS "new" my $obj = Tags::HTML->new(%params); Constructor. Returns instance of class. * "css" 'CSS::Struct::Output' object for "process_css" processing. Default value is undef. * "no_css" No CSS support flag. If this flag is set to 1, "process_css" don't process CSS style. Default value is 0. * "tags" 'Tags::Output' object for "process" processing. Default value is undef. "cleanup" $obj->cleanup(@params); Process cleanup after page run. Returns undef. "init" $obj->init(@params); Process initialization before page run. Returns undef. "process" $obj->process; Process Tags structure. Returns undef. "process_css" $obj->process_css; Process CSS::Struct structure. 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(): Need to be implemented in inherited class in _process() method. Parameter 'tags' isn't defined. process_css(): Need to be implemented in inherited class in _process_css() method. Parameter 'css' isn't defined. EXAMPLE1 use strict; use warnings; package Foo; use base qw(Tags::HTML); sub new { my ($class, @params) = @_; # No CSS support. push @params, 'no_css', 1; my $self = $class->SUPER::new(@params); # Object. return $self; } sub _cleanup { my $self = shift; delete $self->{'_data'}; return; } sub _init { my ($self, @variables) = @_; $self->{'_data'} = \@variables; return; } sub _process { my $self = shift; $self->{'tags'}->put( ['b', 'div'], ); foreach my $variable (@{$self->{'_data'}}) { $self->{'tags'}->put( ['b', 'div'], ['d', $variable], ['e', 'div'], ); } $self->{'tags'}->put( ['e', 'div'], ); return; } package main; use Tags::Output::Indent; # Object. my $tags = Tags::Output::Indent->new; my $obj = Foo->new( 'tags' => $tags, ); # Init data. $obj->init('foo', 'bar', 'baz'); # Process. $obj->process; # Print out. print "HTML\n"; print $tags->flush."\n"; # Output: # HTML #
#
# foo #
#
# bar #
#
# baz #
#
EXAMPLE2 use strict; use warnings; package Foo; use base qw(Tags::HTML); sub _process { my ($self, $value) = @_; $self->{'tags'}->put( ['b', 'div'], ['d', $value], ['e', 'div'], ); return; } sub _process_css { my ($self, $color) = @_; $self->{'css'}->put( ['s', 'div'], ['d', 'background-color', $color], ['e'], ); return; } package main; use CSS::Struct::Output::Indent; use Tags::Output::Indent; # Object. my $css = CSS::Struct::Output::Indent->new; my $tags = Tags::Output::Indent->new; my $obj = Foo->new( 'css' => $css, 'tags' => $tags, ); # Process indicator. $obj->process_css('red'); $obj->process('value'); # Print out. print "CSS\n"; print $css->flush."\n\n"; print "HTML\n"; print $tags->flush."\n"; # Output: # CSS # div { # background-color: red; # } # # HTML #
# value #
DEPENDENCIES Class::Utils, Error::Pure, Scalar::Util. SEE ALSO Plack::App::Tags::HTML Plack application for Tags::HTML objects. Plack::Component::Tags::HTML Plack component for Tags with HTML output. REPOSITORY AUTHOR Michal Josef Špaček LICENSE AND COPYRIGHT © 2021-2023 Michal Josef Špaček BSD 2-Clause License VERSION 0.07