Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 3.145.105.85
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/local/lib64/perl5/Template/Plugin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/lib64/perl5/Template/Plugin/Assert.pm
#============================================================= -*-Perl-*-
#
# Template::Plugin::Assert
#
# DESCRIPTION
#   Template Toolkit plugin module which allows you to assert that
#   items fetches from the stash are defined.
#
# AUTHOR
#   Andy Wardley   <abw@wardley.org>
#
# COPYRIGHT
#   Copyright (C) 2008-2022 Andy Wardley.  All Rights Reserved.
#
#   This module is free software; you can redistribute it and/or
#   modify it under the same terms as Perl itself.
#
#============================================================================

package Template::Plugin::Assert;
use base 'Template::Plugin';
use strict;
use warnings;
use Template::Exception;

our $VERSION   = '3.100';
our $MONAD     = 'Template::Monad::Assert';
our $EXCEPTION = 'Template::Exception';
our $AUTOLOAD;

sub load {
    my $class   = shift;
    my $context = shift;
    my $stash   = $context->stash;
    my $vmethod = sub {
        $MONAD->new($stash, shift);
    };

    # define .assert vmethods for hash and list objects
    $context->define_vmethod( hash => assert => $vmethod );
    $context->define_vmethod( list => assert => $vmethod );

    return $class;
}

sub new {
    my ($class, $context, @args) = @_;
    # create an assert plugin object which will handle simple variable
    # lookups.
    return bless { _CONTEXT => $context }, $class;
}

sub AUTOLOAD {
    my ($self, @args) = @_;
    my $item = $AUTOLOAD;
    $item =~ s/.*:://;
    return if $item eq 'DESTROY';

    # lookup the named values
    my $stash = $self->{ _CONTEXT }->stash;
    my $value = $stash->dotop($stash, $item, \@args);

    if (! defined $value) {
        die $EXCEPTION->new( assert => "undefined value for $item" );
    }
    return $value;
}


package Template::Monad::Assert;

our $EXCEPTION = 'Template::Exception';
our $AUTOLOAD;

sub new {
    my ($class, $stash, $this) = @_;
    bless [$stash, $this], $class;
}

sub AUTOLOAD {
    my ($self, @args) = @_;
    my ($stash, $this) = @$self;
    my $item = $AUTOLOAD;
    $item =~ s/.*:://;
    return if $item eq 'DESTROY';

    my $value = $stash->dotop($stash, $item, \@args);

    if (! defined $value) {
        die $EXCEPTION->new( assert => "undefined value for $item" );
    }
    return $value;
}

1;

__END__

=head1 NAME

Template::Plugin::Assert - trap undefined values

=head1 SYNOPSIS

    [% USE assert %]

    # throws error if any undefined values are returned
    [% object.assert.method %]
    [% hash.assert.key %]
    [% list.assert.item %]

=head1 DESCRIPTION

This plugin defines the C<assert> virtual method that can be used
to automatically throw errors when undefined values are used.

For example, consider this dotop:

    [% user.name %]

If C<user.name> is an undefined value then TT will silently ignore the
fact and print nothing.  If you C<USE> the C<assert> plugin then you
can add the C<assert> vmethod between the C<user> and C<name> elements,
like so:

    [% user.assert.name %]

Now, if C<user.name> is an undefined value, an exception will be thrown:

    assert error - undefined value for name

=head1 AUTHOR

Andy Wardley E<lt>abw@wardley.orgE<gt> L<http://wardley.org/>

=head1 COPYRIGHT

Copyright (C) 2008-2022 Andy Wardley.  All Rights Reserved.

This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

=head1 SEE ALSO

L<Template::Plugin>

=cut

# Local Variables:
# mode: perl
# perl-indent-level: 4
# indent-tabs-mode: nil
# End:
#
# vim: expandtab shiftwidth=4:

Youez - 2016 - github.com/yon3zu
LinuXploit