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  instead default 
             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  instead  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  tag.
             Prints  instead .
             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:
     # 
     #   data
     # 
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
    
AUTHOR
    Michal Josef Špaček skim@cpan.org
    
LICENSE AND COPYRIGHT
    © 2011-2023 Michal Josef Špaček
    BSD 2-Clause License
VERSION
    0.10