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::MoreUtils,
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-2022 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.09