Data-Tubes
view release on metacpan or search on metacpan
script/tubergen view on Meta::CPAN
for my $name (qw( FATAL ERROR WARN INFO DEBUG TRACE )) {
# create the ->level methods
*{__PACKAGE__ . '::' . lc($name)} = sub {
my $self = shift;
return $self->log($$name, @_);
};
# create ->is_level and ->isLevelEnabled methods as well
*{__PACKAGE__ . '::is' . ucfirst(lc($name)) . 'Enabled'} =
*{__PACKAGE__ . '::is_' . lc($name)} = sub {
return 0 if $_[0]->{level} == $DEAD || $$name > $_[0]->{level};
return 1;
};
} ## end for my $name (qw( FATAL ERROR WARN INFO DEBUG TRACE ))
for my $name (
qw(
FATAL ERROR WARN INFO DEBUG TRACE
LOGWARN LOGDIE LOGEXIT
LOGCARP LOGCLUCK LOGCROAK LOGCONFESS
)
)
{
*{__PACKAGE__ . '::' . $name} = sub {
$_instance->can(lc $name)->($_instance, @_);
};
} ## end for my $name (qw( FATAL ERROR WARN INFO DEBUG TRACE...))
for my $accessor (qw( fh logexit_code )) {
*{__PACKAGE__ . '::' . $accessor} = sub {
my $self = shift;
$self = $_instance unless ref $self;
$self->{$accessor} = shift if @_;
return $self->{$accessor};
};
} ## end for my $accessor (qw( fh logexit_code ))
my $index = -1;
for my $name (qw( DEAD OFF FATAL ERROR WARN INFO DEBUG TRACE )) {
$name_of{$$name = $index} = $name;
$id_for{$name} = $index;
$id_for{$index} = $index;
++$index;
} ## end for my $name (qw( DEAD OFF FATAL ERROR WARN INFO DEBUG TRACE ))
get_logger(); # initialises $_instance;
} ## end BEGIN
1; # Magic true value required at end of module
END_OF_FILE
# __MOBUNDLE_FILE__
'Mo.pm' => <<'END_OF_FILE',
package Mo;
$VERSION=0.39;
no warnings;my$M=__PACKAGE__.'::';*{$M.Object::new}=sub{my$c=shift;my$s=bless{@_},$c;my%n=%{$c.::.':E'};map{$s->{$_}=$n{$_}->()if!exists$s->{$_}}keys%n;$s};*{$M.import}=sub{import warnings;$^H|=1538;my($P,%e,%o)=caller.'::';shift;eval"no Mo::$_",&{$...
END_OF_FILE
# __MOBUNDLE_FILE__
'Mo/default.pm' => <<'END_OF_FILE',
package Mo::default;my$M="Mo::";
$VERSION=0.39;
*{$M.'default::e'}=sub{my($P,$e,$o)=@_;$o->{default}=sub{my($m,$n,%a)=@_;exists$a{default}or return$m;my($d,$r)=$a{default};my$g='HASH'eq($r=ref$d)?sub{+{%$d}}:'ARRAY'eq$r?sub{[@$d]}:'CODE'eq$r?$d:sub{$d};my$i=exists$a{lazy}?$a{lazy}:!${$P.':N'};$i ...
END_OF_FILE
# __MOBUNDLE_FILE__
'Template/Perlish.pm' => <<'END_OF_FILE',
package Template::Perlish;
# vim: ts=3 sts=3 sw=3 et ai :
use 5.008_000;
use warnings;
use strict;
use Carp;
use English qw( -no_match_vars );
use constant ERROR_CONTEXT => 3;
{ our $VERSION = '1.56'; }
use Scalar::Util qw< blessed reftype >;
# Function-oriented interface
sub import {
my ($package, @list) = @_;
for my $sub (@list) {
croak "subroutine '$sub' not exportable"
unless grep { $sub eq $_ } qw< crumble render traverse >;
my $caller = caller();
no strict 'refs'; ## no critic (ProhibitNoStrict)
local $SIG{__WARN__} = \&Carp::carp;
*{$caller . q<::> . $sub} = \&{$package . q<::> . $sub};
} ## end for my $sub (@list)
return;
} ## end sub import
sub render {
my ($template, @rest) = @_;
my ($variables, %params);
if (@rest) {
$variables = ref($rest[0]) ? shift(@rest) : {splice @rest, 0};
%params = %{shift @rest} if @rest;
}
return __PACKAGE__->new(%params)->process($template, $variables);
} ## end sub render
# Object-oriented interface
{
( run in 1.082 second using v1.01-cache-2.11-cpan-97f6503c9c8 )