Class-Easy
view release on metacpan or search on metacpan
lib/Class/Easy/Base.pm view on Meta::CPAN
package Class::Easy::Base;
use Class::Easy::Import;
require Class::Easy;
sub import {
my $mypkg = shift;
my $callpkg = caller;
my %params = @_;
# use warnings
${^WARNING_BITS} ^= ${^WARNING_BITS} ^ $Class::Easy::Import::WARN;
# use strict, use utf8;
$^H |= $Class::Easy::Import::H;
# use feature
$^H{feature_switch} = $^H{feature_say} = $^H{feature_state} = 1;
# probably check for try_to_use is enough
return
if defined *{"$callpkg\::try_to_use"}{CODE}
and Class::Easy::sub_fullname (*{"$callpkg\::try_to_use"}{CODE}) eq 'Class::Easy::__ANON__';
# export subs
*{"$callpkg\::$_"} = \&{"Class::Easy::$_"} foreach @Class::Easy::EXPORT;
foreach my $p (keys %Class::Easy::EXPORT_FOREIGN) {
*{"$callpkg\::$_"} = \&{"$p\::$_"} foreach @{$Class::Easy::EXPORT_FOREIGN{$p}};
}
push @{"$callpkg\::ISA"}, 'Class::Easy::Base';
}
sub new {
my $class = shift;
my $params = {@_};
bless $params, $class;
}
sub set_field_values {
my $self = shift;
my %params = @_;
foreach my $k (keys %params) {
$self->$k ($params{$k});
}
}
sub list_all_subs {
my $class = shift;
$class = ref $class if ref $class;
my $sub_by_type = Class::Easy::list_all_subs_for ($class);
wantarray
? (
keys %{$sub_by_type->{method}},
keys %{$sub_by_type->{runtime}},
map {@{$sub_by_type->{inherited}->{$_}}} keys %{$sub_by_type->{inherited}})
: $sub_by_type;
}
sub attach_paths {
my $class = shift;
$class = ref $class if ref $class;
my @pack_chunks = split(/\:\:/, $class);
require File::Spec;
my $FS = 'File::Spec';
my $pack_path = join ('/', @pack_chunks) . '.pm';
( run in 0.726 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )