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 )