add changelog entry, bump version number
[gitmo/Moose-Autobox.git] / lib / Moose / Autobox.pm
index 6ca3141..947365a 100644 (file)
@@ -1,13 +1,14 @@
 
 package Moose::Autobox;
-
+use 5.006;
 use strict;
 use warnings;
 
 use Carp        qw(confess);
 use Scalar::Util ();
+use Moose::Util  ();
 
-our $VERSION = '0.04';
+our $VERSION = '0.11';
 
 use base 'autobox';
 
@@ -24,40 +25,48 @@ sub mixin_additional_role {
     my ($class, $type, $role) = @_;
     ($type =~ /SCALAR|ARRAY|HASH|CODE/)
         || confess "Can only add additional roles to SCALAR, ARRAY, HASH or CODE";
-    ('Moose::Autobox::' . $type)->meta->_apply_all_roles($role);
+    Moose::Util::apply_all_roles(('Moose::Autobox::' . $type)->meta, ($role));
 }
 
 {
                         
     package Moose::Autobox::SCALAR;
-    # NOTE:
-    # this doesnt make sense, but 
-    # I need to prevent Moose from 
-    # assiging to @ISA
-    use base 'UNIVERSAL';
-    use Moose;
-    with 'Moose::Autobox::Scalar';
+
+    use Moose::Autobox::Scalar;
+
+    use metaclass 'Moose::Meta::Class';
+
+    Moose::Util::apply_all_roles(__PACKAGE__->meta, ('Moose::Autobox::Scalar'));
 
     *does = \&Moose::Object::does;
 
     package Moose::Autobox::ARRAY;
-    use base 'UNIVERSAL';
-    use Moose;
-    with 'Moose::Autobox::Array';
+
+    use Moose::Autobox::Array;
+
+    use metaclass 'Moose::Meta::Class';
+
+    Moose::Util::apply_all_roles(__PACKAGE__->meta, ('Moose::Autobox::Array'));
 
     *does = \&Moose::Object::does;
 
     package Moose::Autobox::HASH;
-    use base 'UNIVERSAL';
-    use Moose;
-    with 'Moose::Autobox::Hash';
+
+    use Moose::Autobox::Hash;
+
+    use metaclass 'Moose::Meta::Class';
+
+    Moose::Util::apply_all_roles(__PACKAGE__->meta, ('Moose::Autobox::Hash'));
 
     *does = \&Moose::Object::does;
 
     package Moose::Autobox::CODE;
-    use base 'UNIVERSAL';
-    use Moose;
-    with 'Moose::Autobox::Code';  
+
+    use Moose::Autobox::Code;
+
+    use metaclass 'Moose::Meta::Class';
+
+    Moose::Util::apply_all_roles(__PACKAGE__->meta, ('Moose::Autobox::Code'));
 
     *does = \&Moose::Object::does;            
  
@@ -71,7 +80,7 @@ __END__
 
 =head1 NAME 
 
-Moose::Autobox - Ruby ain't got nothin on us
+Moose::Autobox - Autoboxed wrappers for Native Perl datatypes 
 
 =head1 SYNOPOSIS
 
@@ -80,20 +89,6 @@ Moose::Autobox - Ruby ain't got nothin on us
   print 'Print squares from 1 to 10 : ';
   print [ 1 .. 10 ]->map(sub { $_ * $_ })->join(', ');
 
-=head1 CAVEAT
-
-First, a warning.
-
-This module is very very very very very very very experimental. It 
-makes use of a very experimental module (L<autobox>) and uses some 
-shiney new technology (L<Moose::Role>) to accomplish it's goals.
-
-Use this at your own risk. If it breaks the lamp in the living room
-and your mother yells at you, don't come complaining to me.
-
-Also, as this is so experimental, it's API should not be considered 
-to be stable. It could very well change in radical ways.
-
 =head1 DESCRIPTION
 
 Moose::Autobox provides an implementation of SCALAR, ARRAY, HASH
@@ -114,10 +109,27 @@ the 'hooks' for others to add implementation too.
 
 =head2 Is this for real? or just play?
 
-My intent is to try and make this module as production worthy as 
-possible. This may or may not be possible, depending on how well 
-L<autobox> works out. At this point, I have high hopes for things
-but only time (and more tests and code) will tell.
+Several people are using this module in serious applications and 
+it seems to be quite stable. The underlying technologies of L<autobox>
+and L<Moose::Role> are also considered stable. There is some performance
+hit, but as I am fond of saying, nothing in life is free. If you have 
+any questions regarding this module, either email me, or stop by #moose
+on irc.perl.org and ask around.
+
+=head2 Adding additional methods
+
+B<Moose::Autobox> asks L<autobox> to use the B<Moose::Autobox::*> namespace 
+prefix so as to avoid stepping on the toes of other L<autobox> modules. This 
+means that if you want to add methods to a particular perl type 
+(i.e. - monkeypatch), then you must do this:
+
+  sub Moose::Autobox::SCALAR::bar { 42 }
+
+instead of this:
+
+  sub SCALAR::bar { 42 }
+
+as you would with vanilla autobox.
 
 =head1 METHODS
 
@@ -163,7 +175,7 @@ renormalist
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006-2007 by Infinity Interactive, Inc.
+Copyright 2006-2008 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>