Class-Framework

 view release on metacpan or  search on metacpan

lib/Class/MethodVars.pm  view on Meta::CPAN

package Class::MethodVars;
use warnings;
use strict;

use NEXT;

our $VERSION = '1.'.qw $Rev: 133 $[1];

our %Configs; # Needs to be accessible to Class::Framework
my %OptionsMap = (
	'^args'=>'hatargs',
	'hatargs'=>'hatargs',
	'varargs'=>'varargs',
	'^fields'=>'hatfields',
	'hatfields'=>'hatfields',
	'varfields'=>'varfields',
	'^this'=>'hatthis',
	'hatthis'=>'hatthis',
	'varthis'=>'varthis',
	'subthis'=>'subthis',
	'^class'=>'hatclass',
	'hatclass'=>'hatclass',
	'varclass'=>'varclass',
	'subclass'=>'subclass',

	'debug'=>'debug',
);
my %DefaultOptions = (
	hatargs=>1,
	hatfields=>1,
	subthis=>1,
	subclass=>1,
	# No varthis and varclass because that causes an implicit use vars which is bad for a default.
);

sub __DefaultConfigs() {
	return {
		fieldhatprefix=>"",
		fieldvarprefix=>"",
		class=>"__CLASS__",
		this=>"this",
		fields=>[],
		rwfields=>[],
		rofields=>[],
		wofields=>[],
		hiddenfields=>[],
		options=>{ %DefaultOptions }
	};
}

sub import {
	shift; # You should NEVER be @ISA = "Class::MethodVars"
	my $package = caller;
	if ($Configs{$package}) {
		require Carp;
		Carp::croak "Double import into this package!";
	}
	my $Config = $Configs{$package}||=__DefaultConfigs;
	my $cpos = 0;
	while (@_) {
		my $cmd = shift;
		$cpos++;
		if ($cpos == 1 and ref($cmd)) {
			push(@{$Config->{rwfields}},@$cmd);
		} elsif ($cmd eq '-this') {
			$Config->{this} = shift;
		} elsif ($cmd eq '-class') {



( run in 0.534 second using v1.01-cache-2.11-cpan-5b529ec07f3 )