1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
package MooseX::Singleton::Role::Object;
BEGIN {
$MooseX::Singleton::Role::Object::AUTHORITY = 'cpan:SARTAK';
}
{
$MooseX::Singleton::Role::Object::VERSION = '0.29';
}
use Moose::Role;
use Carp qw( carp );
sub instance { shift->new }
sub initialize {
my ( $class, @args ) = @_;
my $existing = $class->meta->existing_singleton;
confess "Singleton is already initialized" if $existing;
return $class->new(@args);
}
override new => sub {
my ( $class, @args ) = @_;
my $existing = $class->meta->existing_singleton;
confess "Singleton is already initialized" if $existing and @args;
# Otherwise BUILD will be called repeatedly on the existing instance.
# -- rjbs, 2008-02-03
return $existing if $existing and !@args;
return super();
};
sub _clear_instance {
my ($class) = @_;
$class->meta->clear_singleton;
}
no Moose::Role;
1;
# ABSTRACT: Object class role for MooseX::Singleton
=pod
=head1 NAME
MooseX::Singleton::Role::Object - Object class role for MooseX::Singleton
=head1 VERSION
version 0.29
=head1 DESCRIPTION
This just adds C<instance> as a shortcut for C<new>.
=head1 AUTHOR
Shawn M Moore <sartak@gmail.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Shawn M Moore.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
__END__
|