GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Text::Xslate::Manual::Debugging(3) User Contributed Perl Documentation Text::Xslate::Manual::Debugging(3)

Text::Xslate::Manual::Debugging - Debugging techniques for Xslate templates

This document describes techniques for debugging templates.

Try "verbose => 2" in the first step. This option enables full warnings, especially warnings related to "undef".

Xslate messages include file names, line numbers, and, if possible, source code lines which seems problems.

You can also access the file name and the line number in templates by "__FILE__" and "__LINE__" tokens just like as Perl.

If you want reports files and lines from your registered functions, "Text::Xslate->current_file" and "Text::Xslate->current_line" in callbacks are the same as "__FILE__" and "__LINE__" in templates respectively.

    sub my_sqrt {
        my($n) = @_;

        if($n < 1) {
            # return a message instead of warnings
            return sprintf "!!! Can't take sqrt of $n at %s line %d !!!",
                Text::Xslate->current_file, Text::Xslate->current_line;
        }
        return sqrt($n);
    }

    my $tx = Text::Xslate->new(
        function => { sqrt => \&my_sqrt },
    );

You can use any dumping modules via the "function" option, but Xslate has a builtin "dump" filter to dump template values.

    <: $value | dump # Dump $value with Data::Dumper :>

Xslate itself has warning system for use of uninitialized values, but sometimes it is not enough.

If you want fill in some string, e.g. FILL ME, for missing variables, you can use the "hash_with_default()" utility. For example:

    use Text::Xslate::Util qw(hash_with_default);
    $tx->render($name, hash_with_default(\%vars, sub { "FILL ME '@_' " }) );

Note that this is really slow because it is a tied-hash wrapper.

You can customize error handlers by "warn_handler" and "die_handler". In these handlers, you can call "Text::Xslate->print()" method in order to add your custom messages to the output buffer, which makes debugging easier.

    #!perl -w
    use strict;
    use Text::Xslate;
    my %vpath = (
        hello => 'Hello, <: $lang :> world!' . "\n",
    );
    my $tx = Text::Xslate->new(
        path         => \%vpath,
        verbose      => 2,
        warn_handler => sub { Text::Xslate->print('[[', @_, ']]') },
    );

    print $tx->render('hello', { });
    # => Hello, [[use nil to print at ...]] world!

Text::Xslate

Text::Xslate::Manual

2017-01-19 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.