Skip to content

michal-josef-spacek/Tags-Output-Structure

Repository files navigation

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

SYNOPSYS
     use Tags::Output::Structure;

     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;
     use warnings;

     use Data::Printer;
     use Tags::Output::Structure;

     # 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;
     use warnings;

     use Tags::Output::Structure;

     # 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.09

About

Structure class for 'Tags' output.

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages