NAME Tags::Output::Indent - Indent class for Tags. SYNOPSIS use Tags::Output::Indent(%params); my $tags = Tags::Output::Indent->new; $tags->put(['b', 'tag']); my @open_tags = $tags->open_tags; $tags->finalize; $tags->flush; $tags->reset; METHODS "new" my $tags = Tags::Output::Indent->new; Constructor. Returns instance of class. * "attr_callback" Subroutine for output processing of attribute key and value. Input argument is reference to array. Default value is &Tags::Utils::encode_attr_entities. Example is similar as 'data_callback'. * "attr_delimeter" String, that defines attribute delimeter. Default is '"'. Possible is '"' or "'". Example: Prints <tag attr='val' /> instead default <tag attr="val" /> my $tags = Tags::Output::Indent->new( 'attr_delimeter' => "'", ); $tags->put( ['b', 'tag'], ['a', 'attr', 'val'], ['e', 'tag'], ); $tags->flush; * "auto_flush" Auto flush flag. Default is 0. * "cdata_indent" Flag, that means indent CDATA section. Default value is no-indent (0). * "cdata_callback" Subroutine for output processing of cdata. Input argument is reference to array. Default value is undef. Example is similar as 'data_callback'. * "data_callback" Subroutine for output processing of data. Input argument is reference to array. Default value is &Tags::Utils::encode_char_entities. Example: 'data_callback' => sub { my $data_ar = shift; foreach my $data (@{$data_ar}) { # Some process. $data =~ s/^\s*//ms; } return; } * "input_tags_item_callback" Input 'Tags' item callback. Callback is processing before main 'Tags' put(). It's usefull for e.g. validation. Default value is undef. * "line_size" Line size. Default value is 79. * "next_indent" Value of indent, which are added to begin of line. Default value is " ". * "no_data_callback" Reference to array of tags, that can't use data callback. Default is ['script', 'style']. Example: For elements defined in this field we don't use 'data_callback'. It's used for doing of HTML escape sequences. Prints <script>&</script> instead <script>&</script> in default setting of 'data_callback'. my $tags = Tags::Output::Indent->new( 'no_data_callback' => ['script'], ); $tags->put(['b', 'script'], ['d', '&'], ['e', 'script']); $tags->flush; * "no_simple" Reference to array of tags, that can't by simple. Default is []. Example: That's normal in html pages, web browsers has problem with <script /> tag. Prints <script></script> instead <script />. my $tags = Tags::Output::Raw->new( 'no_simple' => ['script'] ); $tags->put( ['b', 'script'], ['e', 'script'], ); $tags->flush; * "output_callback" Output callback. Input argument is reference to scalar of output string. Default value is undef. Example is similar as 'data_callback'. * "output_handler" Handler for print output strings. Must be a GLOB. Default is undef. * "output_sep" Output separator. Default value is newline (\n). * "preserved" List of elements, which content will be preserved. Default value is reference to blank array. * "raw_callback" Subroutine for output processing of raw data. Input argument is reference to array. Default value is undef. Example is similar as 'data_callback'. * "skip_bad_tags" Skip bad tags. Default value is 0. * "strict_instruction" Strict instruction. Default value is 1. "finalize" $tags->finalize; Finalize Tags output. Automaticly puts end of all opened tags. "flush" $tags->flush; Flush tags in object. If defined 'output_handler' flush to its. Or return code. If enabled $reset_flag, then resets internal variables via reset method. "open_tags" my @open_tags = $tags->open_tags; Return array of opened tags. "put" $tags->put(['b', 'tag']); Put tags code in tags format. "reset" $tags->reset; Resets internal variables. ERRORS 'auto_flush' parameter can't use without 'output_handler' parameter. Bad attribute delimeter '%s'. Bad CDATA section. Bad data. Bad parameter '%s'. Bad tag type 'a'. Bad type of data. Ending bad tag: '%s' in block of tag '%s'. In XML mode must be a attribute value. EXAMPLE use strict; use warnings; use Tags::Output::Indent; # Object. my $tags = Tags::Output::Indent->new; # Put data. $tags->put( ['b', 'text'], ['d', 'data'], ['e', 'text'], ); # Print. print $tags->flush."\n"; # Output: # <text> # data # </text> DEPENDENCIES Error::Pure, Indent, Indent::Word, Indent::Block, List::Util, Readonly, Tags::Utils::Preserve. SEE ALSO Tags Structure oriented SGML/XML/HTML/etc. elements manipulation. Tags::Output Base class for Tags::Output::*. Task::Tags Install the Tags modules. REPOSITORY <https://github.com/michal-josef-spacek/Tags-Output-Indent> AUTHOR Michal Josef Å paÄek skim@cpan.org <http://skim.cz> LICENSE AND COPYRIGHT © 2011-2023 Michal Josef Å paÄek BSD 2-Clause License VERSION 0.10