diff options
author | jluehrs2 <jluehrs2@uiuc.edu> | 2008-01-30 21:34:54 -0500 |
---|---|---|
committer | jluehrs2 <jluehrs2@uiuc.edu> | 2008-01-30 21:34:54 -0500 |
commit | b1ae1086a4fcfa69c7fa70e5964923a7c9e1003c (patch) | |
tree | e77431122f18cf03bb844d9e4680729114b5b5ca /inc/Module/Install/Base.pm | |
download | games-word-b1ae1086a4fcfa69c7fa70e5964923a7c9e1003c.tar.gz games-word-b1ae1086a4fcfa69c7fa70e5964923a7c9e1003c.zip |
Initial import of Games::Word
Diffstat (limited to 'inc/Module/Install/Base.pm')
-rw-r--r-- | inc/Module/Install/Base.pm | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/inc/Module/Install/Base.pm b/inc/Module/Install/Base.pm new file mode 100644 index 0000000..49dfde6 --- /dev/null +++ b/inc/Module/Install/Base.pm @@ -0,0 +1,70 @@ +#line 1 +package Module::Install::Base; + +$VERSION = '0.68'; + +# Suspend handler for "redefined" warnings +BEGIN { + my $w = $SIG{__WARN__}; + $SIG{__WARN__} = sub { $w }; +} + +### This is the ONLY module that shouldn't have strict on +# use strict; + +#line 41 + +sub new { + my ($class, %args) = @_; + + foreach my $method ( qw(call load) ) { + *{"$class\::$method"} = sub { + shift()->_top->$method(@_); + } unless defined &{"$class\::$method"}; + } + + bless( \%args, $class ); +} + +#line 61 + +sub AUTOLOAD { + my $self = shift; + local $@; + my $autoload = eval { $self->_top->autoload } or return; + goto &$autoload; +} + +#line 76 + +sub _top { $_[0]->{_top} } + +#line 89 + +sub admin { + $_[0]->_top->{admin} or Module::Install::Base::FakeAdmin->new; +} + +sub is_admin { + $_[0]->admin->VERSION; +} + +sub DESTROY {} + +package Module::Install::Base::FakeAdmin; + +my $Fake; +sub new { $Fake ||= bless(\@_, $_[0]) } + +sub AUTOLOAD {} + +sub DESTROY {} + +# Restore warning handler +BEGIN { + $SIG{__WARN__} = $SIG{__WARN__}->(); +} + +1; + +#line 138 |