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>&amp;</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