NAME

 Tags::Output::Raw - Raw printing 'Tags' structure to tags code.

SYNOPSIS

 use Tags::Output::Raw;

 my $tags = Tags::Output::Raw->new(%params);
 $tags->put(['b', 'tag']);
 my @elements = $tags->open_elements;
 $tags->finalize;
 $tags->flush($reset_flag);
 $tags->reset;

 # Deprecated methods.
 my @tags = $obj->open_tags;

METHODS

new(%params)
 Constructor.
  • 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::Raw->new(
             'attr_delimeter' => "'",
     );
     $tags->put(['b', 'tag'], ['a', 'attr', 'val'], ['e', 'tag']);
     $tags->flush;
  • auto_flush

     Auto flush flag.
     Default is 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, $self) = @_;
             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.
  • 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 callback which encode to output encoding, if parameter 'output_encoding' is present.
    
     Arguments of callback:
     - $data_sr - Reference to data
     - $self - Object
    
     Example for output encoding in iso-8859-2:
     'output_callback' => sub {
             my ($data_sr, $self) = @_;
    
             ${$data_sr} = encode('iso-8859-2', ${$data_sr});
    
             return;
     }
  • output_encoding

     Output encoding.
     Default value is undef, which mean not encode.
  • output_handler

     Handler for print output strings.
     Must be a GLOB.
     Default is undef.
  • 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.
  • xml

     Flag, that means xml output.
     Default is 0 (sgml).
finalize()
 Finalize Tags output.
 Automaticly puts end of all opened tags.
 Returns undef.
flush($reset_flag)
 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_elements()
 Return array of opened tags.
put(@data)
 Put tags code in tags format.
 Returns undef.
reset()
 Resets internal variables.
 Returns undef.

DEPRECATED METHODS

open_tags()
 Return array of opened tags.

ERRORS

 new():
         Bad attribute delimeter '%s'.
         From Tags::Output::new():
                Auto-flush can't use without output handler.
                Output handler is bad file handler.
                From Class::Utils::set_params():
                       Unknown parameter '%s'.

 flush():
         From Tags::Output::flush():
                Cannot write to output handler.

 put():
         Bad tag type 'a'.
         Bad CDATA data.
         Ending bad tag: '%s' doesn't begin.
         Ending bad tag: '%s' in block of tag '%s'.
         In XML mode must be a attribute '%s' value.
         From Tags::Output::put():
                Bad data.
                Bad type of data.
                Bad number of arguments. 'Tags' structure %s

EXAMPLE1

 use strict;
 use warnings;

 use Tags::Output::Raw;

 # Object.
 my $tags = Tags::Output::Raw->new;

 # Put data.
 $tags->put(
         ['b', 'text'],
         ['d', 'data'],
         ['e', 'text'],
 );

 # Print.
 print $tags->flush."\n";

 # Output:
 # <text>data</text>

EXAMPLE2

 use strict;
 use warnings;

 use Encode;
 use Tags::Output::Raw;

 # Object.
 my $tags = Tags::Output::Raw->new(
         'data_callback' => sub {
                 my ($data_ar, $self) = @_;
                 foreach my $data (@{$data_ar}) {
                          $data = encode_utf8($data);
                 }
                 return;
         },
 );

 # Data in characters.
 my $data = decode_utf8('řčěšřšč');

 # Put data.
 $tags->put(
         ['b', 'text'],
         ['d', $data],
         ['e', 'text'],
 );

 # Print.
 print $tags->flush."\n";

 # Output:
 # <text>řčěšřšč</text>

DEPENDENCIES

Error::Pure, List::MoreUtils, Readonly, Tags::Utils::Preserve.

SEE ALSO

Task::Tags

Install the Tags modules.

REPOSITORY

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

AUTHOR

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

http://skim.cz/

LICENSE AND COPYRIGHT

© 2005-2021 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.11