MooseX::SingletonMethod - Moose with Singleton Method facility.
Version 0.02
Simple usage example....
package Baz; use MooseX::SingletonMethod; # <= Moose with SingletonMethod facility attached no MooseX::SingletonMethod; package main; my $baz = Baz->new; my $foo = Baz->new; # add singleton method called "baz" just to $baz and not to Baz class $baz->add_singleton_method( baz => sub { 'baz!' } ); say $baz->baz; # => 'baz' say $foo->baz; # ERROR: Can't locate object method "baz"....
Alternative to MooseX::SingletonMethod you can just use MooseX::SingletonMethod::Role directly like so...
package Baz; use Moose; with 'MooseX::SingletonMethod::Role'; no Moose;
TBD.
Using roles you can already create Singleton Methods with Moose:
MooseX::SingletonMethod simple adds a nicety wrapper around this.
There are three methods available to create Singleton Methods using MooseX::SingletonMethod. Here are some examples using MooseX::Declare with MooseX::SingletonMethod::Role:
use MooseX::Declare; class FooBarBaz with MooseX::SingletonMethod::Role { method comes_with { "comes with FooBarBaz class" } } # one way to create singleton method.... my $foo = FooBarBaz->new; $foo->become_singleton; # make $foo a singleton $foo->meta->add_method( foo => 'foo!' ); # add method "foo" using meta # and another..... my $bar = FooBarBaz->new; $bar->add_singleton_method( bar => sub { 'bar!' } ); # and finally multiple methods.... my $baz = FooBarBaz->new; $baz->add_singleton_methods( baz1 => sub { 'baz1!' }, baz2 => sub { 'baz2!' }, ); # Methods each object now has: # # $foo -> [ comes_with, foo ] # $bar -> [ comes_with, bar ] # $baz -> [ comes_with, baz1, baz2 ]
Each time add_singleton_method or add_singleton_methods is called it creates a new anonymous class which the object is blessed into.
If you want to add more methods to already bless anon class then simply use ->meta->add_method like in above $foo example.
None
Makes the object a singleton (by creating an anonymous class which the object is blessed with):
$baz->become_singleton;
Adds a singleton method to this object (same as above + creates prescribed method):
$bar->add_singleton_method( bar => sub { 'bar!' } );
Same as above except allows multiple method declaration:
$baz->add_singleton_methods( baz1 => sub { 'baz1!' }, baz2 => sub { 'baz2!' }, );
Internal Moose method
Barry Walsh, <draegtun at cpan.org>
<draegtun at cpan.org>
Please report any bugs or feature requests to bug-moosex-singletonmethod at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-SingletonMethod. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-moosex-singletonmethod at rt.cpan.org
You can find documentation for this module with the perldoc command.
perldoc MooseX::SingletonMethod
You can also look for information at:
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-SingletonMethod
AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/MooseX-SingletonMethod
CPAN Ratings
http://cpanratings.perl.org/d/MooseX-SingletonMethod
Search CPAN
http://search.cpan.org/dist/MooseX-SingletonMethod/
This is beta software. I'll strive to make it better each and every day!
However I accept no liability whatsoever should this software do what you expected ;-)
Copyright 2009 Barry Walsh (Draegtun Systems Ltd), all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install MooseX::SingletonMethod, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooseX::SingletonMethod
CPAN shell
perl -MCPAN -e shell install MooseX::SingletonMethod
For more information on module installation, please visit the detailed CPAN module installation guide.