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 )