Commit | Line | Data |
109b110b |
1 | #!/usr/bin/env perl |
2 | package MooseX::Singleton::Object; |
3 | use Moose; |
4 | use metaclass 'MooseX::Singleton::Meta::Class'; |
5 | |
6 | extends 'Moose::Object'; |
7 | |
109b110b |
8 | sub instance { shift->new } |
9 | |
d928ce3a |
10 | sub initialize { |
11 | my ($class, @args) = @_; |
12 | |
13 | my $existing = $class->meta->existing_singleton; |
14 | confess "Singleton is already initialized" if $existing; |
15 | |
16 | return $class->SUPER::new(@args); |
17 | } |
18 | |
1de95613 |
19 | sub new { |
20 | my ($class, @args) = @_; |
21 | |
22 | my $existing = $class->meta->existing_singleton; |
23 | confess "Singleton is already initialized" if $existing and @args; |
24 | |
25 | return $class->SUPER::new(@args); |
26 | } |
27 | |
109b110b |
28 | 1; |
29 | |
b375b147 |
30 | __END__ |
31 | |
32 | =pod |
33 | |
34 | =head1 NAME |
35 | |
36 | MooseX::Singleton::Object - base class for MooseX::Singleton |
37 | |
38 | =head1 DESCRIPTION |
39 | |
40 | This just adds C<instance> as a shortcut for C<new>. |
41 | |
42 | =cut |
43 | |