App-after
view release on metacpan or search on metacpan
#our $OverrideDefaultAdapterClass;
#our $OverrideDefaultProxyClass;
#
#{
# my $manager = Log::Any::Manager->new();
# sub _manager { return $manager }
#}
#
#sub import {
# my $class = shift;
# my $caller = caller();
#
# my @export_params = ( $caller, @_ );
# $class->_export_to_caller(@export_params);
#}
#
#sub _export_to_caller {
# my $class = shift;
# my $caller = shift;
#
# my $saw_log_param;
# my @params;
# while ( my $param = shift @_ ) {
# if ( $param eq '$log' ) {
# my $string = $dumper->(@_);
# no warnings 'redefine';
# *dump_one_line = $dumper;
# return $string;
#};
#
#
#sub make_method {
# my ( $method, $code, $pkg ) = @_;
#
# $pkg ||= caller();
# no strict 'refs';
# *{ $pkg . "::$method" } = $code;
#}
#
#
#sub require_dynamic {
# my ($class) = @_;
#
# return 1 if $class->can('new');
#
# } else {
# return
# $ENV{LOG} || $ENV{TRACE} || $ENV{DEBUG} ||
# $ENV{VERBOSE} || $ENV{QUIET} || $ENV{LOG_LEVEL};
# }
#}
#
#sub import {
# my $self = shift;
#
# my $caller = caller();
# if (__log_enabled()) {
# require Log::Any;
# Log::Any->_export_to_caller($caller, @_);
# } else {
# my $saw_log_param = grep { $_ eq '$log' } @_;
# if ($saw_log_param) {
# __log_singleton();
# *{"$caller\::log"} = \$log_singleton;
# }
# }
#}
#
#sub get_logger {
# v => 1.1,
# summary => 'Helper when writing functions',
#};
#
#our $STACK_TRACE;
#our @_c;
#our $_i;
#sub err {
# require Scalar::Util;
#
# my @caller = CORE::caller(1);
# if (!@caller) {
# @caller = ("main", "-e", 1, "program");
# }
#
# my ($status, $msg, $meta, $prev);
#
# for (@_) {
# my $ref = ref($_);
# if ($ref eq 'ARRAY') { $prev = $_ }
# elsif ($ref eq 'HASH') { $meta = $_ }
# last unless $STACK_TRACE // $INC{"Carp/Always.pm"};
# last if $prev && ref($prev->[3]) eq 'HASH' &&
# ref($prev->[3]{logs}) eq 'ARRAY' &&
# ref($prev->[3]{logs}[0]) eq 'HASH' &&
# $prev->[3]{logs}[0]{stack_trace};
# $stack_trace = [];
# $_i = 1;
# while (1) {
# {
# package DB;
# @_c = CORE::caller($_i);
# if (@_c) {
# $_c[4] = [@DB::args];
# }
# }
# last unless @_c;
# push @$stack_trace, [@_c];
# $_i++;
# }
# }
# push @{ $meta->{logs} }, {
# my $n = $n0 // 0;
#
# my $pkg = $Perinci::Sub::Wrapper::default_wrapped_package //
# 'Perinci::Sub::Wrapped';
#
# my @r;
# my $i = 0;
# my $j = -1;
# while ($i <= $n+1) {
# $j++;
# @r = CORE::caller($j);
# last unless @r;
# if ($r[0] eq $pkg && $r[1] =~ /^\(eval /) {
# next;
# }
# $i++;
# }
#
# return unless @r;
# return defined($n0) ? @r : $r[0];
#}
# require Function::Fallback::CoreOrPP;
#
# my %args = @_;
#
# my ($base_code, $base_meta);
# if ($args{base_name}) {
# my ($pkg, $leaf);
# if ($args{base_name} =~ /(.+)::(.+)/) {
# ($pkg, $leaf) = ($1, $2);
# } else {
# $pkg = CORE::caller();
# $leaf = $args{base_name};
# }
# no strict 'refs';
# $base_code = \&{"$pkg\::$leaf"};
# $base_meta = ${"$pkg\::SPEC"}{$leaf};
# die "Can't find Rinci metadata for $pkg\::$leaf" unless $base_meta;
# } elsif ($args{base_meta}) {
# $base_meta = $args{base_meta};
# $base_code = $args{base_code}
# or die "Please specify base_code";
# }
# if ($args{modify_meta}) {
# $args{modify_meta}->($output_meta);
# }
#
# if ($args{output_name}) {
# my ($pkg, $leaf);
# if ($args{output_name} =~ /(.+)::(.+)/) {
# ($pkg, $leaf) = ($1, $2);
# } else {
# $pkg = CORE::caller();
# $leaf = $args{output_name};
# }
# no strict 'refs';
# no warnings 'redefine';
# *{"$pkg\::$leaf"} = $output_code if $args{install_sub} // 1;
# ${"$pkg\::SPEC"}{$leaf} = $output_meta;
# }
#
# [200, "OK", {code=>$output_code, meta=>$output_meta}];
#}
# req => 1,
# pos => 2,
# },
# },
# args_as => 'array',
# result_naked => 1,
#};
#sub gen_curried_sub {
# my ($base_name, $set_args, $output_name) = @_;
#
# my $caller = CORE::caller();
#
# my ($base_pkg, $base_leaf);
# if ($base_name =~ /(.+)::(.+)/) {
# ($base_pkg, $base_leaf) = ($1, $2);
# } else {
# $base_pkg = $caller;
# $base_leaf = $base_name;
# }
#
# my ($output_pkg, $output_leaf);
( run in 0.304 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )