The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

NAME

Tags::Output::Structure - Structure class for 'Tags' output.

SYNOPSYS

my $obj = Tags::Output::Structure->new(%parameters);
$obj->finalize;
my $ret_ar = $obj->flush($reset_flag);
my @tags = $obj->open_tags;
$obj->put(@data);
$obj->reset;

METHODS

new

my $obj = Tags::Output::Structure->new(%parameters);

Constructor.

Returns instance of object.

  • auto_flush

    Auto flush flag.
    Default value is 0.
  • output_callback

    Output callback.
    Default value is undef.
  • output_handler

    Set output handler.
    Default value is undef.
  • output_sep

    Output separator.
    Default value is newline.
  • skip_bad_data

    Skip bad tags.
    Default value is 0.
  • strict_instruction

    Strict instruction.
    Default value is 1.

finalize

$obj->finalize;

Finalize Tags output. Automaticly puts end of all opened tags.

Returns undef.

flush

my $ret_ar = $obj->flush($reset_flag);

Flush tags in object. Or returns code. If enabled $reset_flag, then resets internal variables via reset method.

Returns undef or code.

open_tags

my @tags = $obj->open_tags;

Get list of opened tags.

Returns array of opened tags.

put

$obj->put(@data);

Put tags code in tags format.

Returns undef.

reset

$obj->reset;

Resets internal variables.

Returns undef.

ERRORS

new():
Auto-flush can't use without output handler.
Output handler is bad file handler.
From Class::Utils::set_params():
Unknown parameter '%s'.
flush():
Cannot write to output handler.
put():
Ending bad tag: '%s' in block of tag '%s'.

EXAMPLE1

use strict;
# Object.
my $tags = Tags::Output::Structure->new;
# Put all tag types.
$tags->put(
['b', 'tag'],
['a', 'par', 'val'],
['c', 'data', \'data'],
['e', 'tag'],
['i', 'target', 'data'],
['b', 'tag'],
['d', 'data', 'data'],
['e', 'tag'],
);
# Print out.
my $ret_ar = $tags->flush;
# Dump out.
p $ret_ar;
# Output:
# \ [
# [0] [
# [0] "b",
# [1] "tag"
# ],
# [1] [
# [0] "a",
# [1] "par",
# [2] "val"
# ],
# [2] [
# [0] "c",
# [1] "data",
# [2] \ "data"
# ],
# [3] [
# [0] "e",
# [1] "tag"
# ],
# [4] [
# [0] "i",
# [1] "target",
# [2] "data"
# ],
# [5] [
# [0] "b",
# [1] "tag"
# ],
# [6] [
# [0] "d",
# [1] "data",
# [2] "data"
# ],
# [7] [
# [0] "e",
# [1] "tag"
# ]
# ]

EXAMPLE2

use strict;
# Object.
my $tags = Tags::Output::Structure->new(
'output_handler' => \*STDOUT,
);
# Put all tag types.
$tags->put(
['b', 'tag'],
['a', 'par', 'val'],
['c', 'data', \'data'],
['e', 'tag'],
['i', 'target', 'data'],
['b', 'tag'],
['d', 'data', 'data'],
['e', 'tag'],
);
# Print out.
$tags->flush;
# Output:
# ['b', 'tag']
# ['a', 'par', 'val']
# ['c', 'data', 'SCALAR(0x143d9c0)']
# ['e', 'tag']
# ['i', 'target', 'data']
# ['b', 'tag']
# ['d', 'data', 'data']
# ['e', 'tag']

DEPENDENCIES

Error::Pure, Tags::Output.

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-Structure

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2012-2022 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.08