The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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_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 <script>&</script> instead <script>&amp;</script> in default setting of 'data_callback'.
    
    my $tags = Tags::Output::Raw->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 <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::Util, 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-2024 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.16