K2LL33D SHELL

 Apache/2.4.7 (Ubuntu)
 Linux sman1baleendah 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64
 uid=33(www-data) gid=33(www-data) groups=33(www-data)
 safemode : OFF
 MySQL: ON | Perl: ON | cURL: OFF | WGet: ON
  >  / usr / share / perl / 5.18.2 / TAP /
server ip : 104.21.89.46

your ip : 172.69.130.125

H O M E


Filename/usr/share/perl/5.18.2/TAP/Base.pm
Size2.18 kb
Permissionrw-r--r--
Ownerroot : root
Create time27-Apr-2025 10:10
Last modified21-Nov-2018 01:11
Last accessed06-Jul-2025 11:51
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
package TAP::Base;

use strict;
use vars qw($VERSION @ISA);

use TAP::Object;

@ISA = qw(TAP::Object);

=head1 NAME

TAP::Base - Base class that provides common functionality to L<TAP::Parser>
and L<TAP::Harness>

=head1 VERSION

Version 3.26

=cut

$VERSION = '3.26';

use constant GOT_TIME_HIRES => do {
eval 'use Time::HiRes qw(time);';
$@ ? 0 : 1;
};

=head1 SYNOPSIS

package TAP::Whatever;

use TAP::Base;

use vars qw($VERSION @ISA);
@ISA = qw(TAP::Base);

# ... later ...

my $thing = TAP::Whatever->new();

$thing->callback( event => sub {
# do something interesting
} );

=head1 DESCRIPTION

C<TAP::Base> provides callback management.

=head1 METHODS

=head2 Class Methods

=cut

sub _initialize {
my ( $self, $arg_for, $ok_callback ) = @_;

my %ok_map = map { $_ => 1 } @$ok_callback;

$self->{ok_callbacks} = \%ok_map;

if ( my $cb = delete $arg_for->{callbacks} ) {
while ( my ( $event, $callback ) = each %$cb ) {
$self->callback( $event, $callback );
}
}

return $self;
}

=head3 C<callback>

Install a callback for a named event.

=cut

sub callback {
my ( $self, $event, $callback ) = @_;

my %ok_map = %{ $self->{ok_callbacks} };

$self->_croak('No callbacks may be installed')
unless %ok_map;

$self->_croak( "Callback $event is not supported. Valid callbacks are "
. join( ', ', sort keys %ok_map ) )
unless exists $ok_map{$event};

push @{ $self->{code_for}{$event} }, $callback;

return;
}

sub _has_callbacks {
my $self = shift;
return keys %{ $self->{code_for} } != 0;
}

sub _callback_for {
my ( $self, $event ) = @_;
return $self->{code_for}{$event};
}

sub _make_callback {
my $self = shift;
my $event = shift;

my $cb = $self->_callback_for($event);
return unless defined $cb;
return map { $_->(@_) } @$cb;
}

=head3 C<get_time>

Return the current time using Time::HiRes if available.

=cut

sub get_time { return time() }

=head3 C<time_is_hires>

Return true if the time returned by get_time is high resolution (i.e. if Time::HiRes is available).

=cut

sub time_is_hires { return GOT_TIME_HIRES }

1;