The Perl Advent Calendar needs more articles for 2022. Submit your idea today!

NAME

PYX::SGML::Tags - Processing PYX data or file and write as SGML via Tags.

SYNOPSIS

 use PYX::SGML::Tags;

 my $obj = PYX::SGML::Tags->new(%parameters);
 $obj->parse($pyx, $out);
 $obj->parse_file($input_file, $out);
 $obj->parse_handle($input_file_handler, $out);
 $obj->finalize;

METHODS

new

 my $obj = PYX::SGML::Tags->new(%parameters);

Constructor.

Returns instance of class.

  • input_encoding

    Input encoding for parse_file() and parse_handler() usage.

    Default value is 'utf-8'.

  • input_tags_item_callback

    Input 'Tags' item callback. This callback is for Tags::Output::* constructor parameter 'input_tags_item_callback'.

    Default value is undef.

  • output_encoding

    Output encoding.

    Default value is 'utf-8'.

  • tags

    Tags object. Can be any of Tags::Output::* objects. Default value is Tags::Output::Raw-new('output_handler' => \*STDOUT)>. It's required.

parse

 $obj->parse($pyx, $out);

Parse PYX text or array of PYX text. Output is serialization to SGML by Tags::Output::* module. If $out not present, use 'output_handler'.

Returns undef.

parse_file

 $obj->parse_file($input_file, $out);

Parse file with PYX data. $input_file file is decoded by 'input_encoding'. Output is serialization to SGML. If $out not present, use 'output_handler'.

Returns undef.

parse_handler

 $obj->parse_handle($input_file_handler, $out);

Parse PYX handler. $input_file_handler handler is decoded by 'input_encoding'. Output is serialization to SGML. If $out not present, use 'output_handler'.

Returns undef.

finalize

 $obj->finalize;

 Finalize opened tags, if exists.
 Returns undef.

ERRORS

 new():
         Bad 'Tags::Output::*' object.
         From Class::Utils::set_params():
                 Unknown parameter '%s'.

 parse():
         From PYX::Parser::parse():
                 Bad PYX line '%s'.
         From Tags::Output::Raw::flush():
                 Cannot write to output handler.

 parse_file():
         From PYX::Parser::parse_file():
                 Bad PYX line '%s'.
                 No input handler.
         From Tags::Output::Raw::flush():
                 Cannot write to output handler.

 parse_handler():
         From PYX::Parser::parse_handler():
                 Bad PYX line '%s'.
                 No input handler.
         From Tags::Output::Raw::flush():
                 Cannot write to output handler.

EXAMPLE1

 use strict;
 use warnings;

 use PYX::SGML::Tags;

 # Input.
 my $pyx = <<'END';
 (element
 -data
 )element
 END

 # Object.
 my $obj = PYX::SGML::Tags->new;

 # Process.
 $obj->parse($pyx);
 print "\n";

 # Output:
 # <element>data</element>

EXAMPLE2

 use strict;
 use warnings;

 use PYX::SGML::Tags;
 use Tags::Output::Indent;

 # Input.
 my $pyx = <<'END';
 (element
 -data
 )element
 END

 # Object.
 my $obj = PYX::SGML::Tags->new(
         'tags' => Tags::Output::Indent->new(
                 'output_handler' => \*STDOUT,
         ),
 );

 # Process.
 $obj->parse($pyx);
 print "\n";

 # Output:
 # <element>data</element>

EXAMPLE3

 use strict;
 use warnings;

 use PYX::SGML::Tags;
 use Tags::Output::Indent;

 # Input.
 my $pyx = <<'END';
 (element
 -data
 )element
 END

 # Object.
 my $obj = PYX::SGML::Tags->new(
         'input_tags_item_callback' => sub {
                 my $tags_ar = shift;
                 print '[ '.$tags_ar->[0].' ]'."\n";
                 return;
         },
 );

 # Process.
 $obj->parse($pyx);
 print "\n";

 # Output:
 # [ b ]
 # [ d ]
 # [ e ]
 # <element>data</element>

DEPENDENCIES

Class::Utils, Error::Pure, PYX::Parser, PYX::Utils, Tags::Output::Raw.

SEE ALSO

Task::PYX

Install the PYX modules.

REPOSITORY

https://github.com/michal-josef-spacek/PYX-SGML-Tags

AUTHOR

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

http://skim.cz

LICENSE AND COPYRIGHT

© 2011-2021 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.08