X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FSquirrel.pm;h=bbbad760cb3bfb37cdda36c22e9893cb7d1d8b7e;hp=fc8ea0973caf6ef82beff228bbb33d12b7b4f1c4;hb=31c5194bc6a176cec4de515163d27f174eba5c9b;hpb=9baf5d6bc5ac4b034196d755c234062dc5673ad7 diff --git a/lib/Squirrel.pm b/lib/Squirrel.pm index fc8ea09..bbbad76 100644 --- a/lib/Squirrel.pm +++ b/lib/Squirrel.pm @@ -1,4 +1,3 @@ -#!/usr/bin/env perl package Squirrel; use strict; use warnings; @@ -6,15 +5,17 @@ use warnings; sub _choose_backend { if ( $INC{"Moose.pm"} ) { return { + backend => 'Moose', import => \&Moose::import, unimport => \&Moose::unimport, - } + }; } else { require Mouse; return { + backend => 'Mouse', import => \&Mouse::import, unimport => \&Mouse::unimport, - } + }; } } @@ -25,19 +26,25 @@ sub _handlers { my $caller = caller(1); - $pkgs{$caller} = $class->_choose_backend - unless $pkgs{$caller}; + $pkgs{$caller} ||= $class->_choose_backend; } sub import { - goto $_[0]->_handlers->{import}; + require Carp; + Carp::carp("Squirrel is deprecated. Please use Any::Moose instead. It fixes a number of design problems that Squirrel has."); + + my $handlers = shift->_handlers; + unshift @_, $handlers->{backend}; + goto &{$handlers->{import}}; } sub unimport { - goto $_[0]->_handlers->{unimport}; + my $handlers = shift->_handlers; + unshift @_, $handlers->{backend}; + goto &{$handlers->{unimport}}; } -__PACKAGE__ +1; __END__ @@ -45,19 +52,24 @@ __END__ =head1 NAME -Squirrel - Use L, unless L is already loaded. +Squirrel - Use Mouse, unless Moose is already loaded. (DEPRECATED) =head1 SYNOPSIS - use Squirrel; + use Squirrel; has goggles => ( is => "rw", ); +=head1 DEPRECATION + +C is deprecated. C provides the same functionality, +but better. :) + =head1 DESCRIPTION -L and L are TEH BEST FRENDS, but if L isn't there +L and L are THE BEST FRIENDS, but if L isn't there L will hang out with L as well. When your own code doesn't actually care whether or not you use L or @@ -67,6 +79,10 @@ This lets you run with minimal dependencies and have a faster startup, but if L is already in use you get all the benefits of using that (transformability, introspection, more opportunities for code reuse, etc). +=head1 SEE ALSO + +L + =cut