source: perl/modules/Facebook/inc/Module/Install/Base.pm @ ee98987

Last change on this file since ee98987 was ee98987, checked in by Edward Z. Yang <ezyang@mit.edu>, 13 years ago
Initial commit of Facebook module implementation. This module was inspired by Kevin Riggle's Facebook-hacked-onto-Twitter implementation, but was rewritten to stand alone as its own module and use the new Facebook Graph API. It requires the Facebook::Graph CPAN module. Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
  • Property mode set to 100644
File size: 1014 bytes
RevLine 
[ee98987]1#line 1
2package Module::Install::Base;
3
4use strict 'vars';
5use vars qw{$VERSION};
6BEGIN {
7        $VERSION = '0.91';
8}
9
10# Suspend handler for "redefined" warnings
11BEGIN {
12        my $w = $SIG{__WARN__};
13        $SIG{__WARN__} = sub { $w };
14}
15
16#line 42
17
18sub new {
19        my $class = shift;
20        unless ( defined &{"${class}::call"} ) {
21                *{"${class}::call"} = sub { shift->_top->call(@_) };
22        }
23        unless ( defined &{"${class}::load"} ) {
24                *{"${class}::load"} = sub { shift->_top->load(@_) };
25        }
26        bless { @_ }, $class;
27}
28
29#line 61
30
31sub AUTOLOAD {
32        local $@;
33        my $func = eval { shift->_top->autoload } or return;
34        goto &$func;
35}
36
37#line 75
38
39sub _top {
40        $_[0]->{_top};
41}
42
43#line 90
44
45sub admin {
46        $_[0]->_top->{admin}
47        or
48        Module::Install::Base::FakeAdmin->new;
49}
50
51#line 106
52
53sub is_admin {
54        $_[0]->admin->VERSION;
55}
56
57sub DESTROY {}
58
59package Module::Install::Base::FakeAdmin;
60
61my $fake;
62
63sub new {
64        $fake ||= bless(\@_, $_[0]);
65}
66
67sub AUTOLOAD {}
68
69sub DESTROY {}
70
71# Restore warning handler
72BEGIN {
73        $SIG{__WARN__} = $SIG{__WARN__}->();
74}
75
761;
77
78#line 154
Note: See TracBrowser for help on using the repository browser.