logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent - Extending a non-Moose parent class

Authors

       •   Stevan Little <stevan@cpan.org>

       •   Dave Rolsky <autarch@urth.org>

       •   Jesse Luehrs <doy@cpan.org>

       •   Shawn M Moore <sartak@cpan.org>

       •   יובל קוג'מן (Yuval Kogman) <nothingmuch@woobling.org>

       •   Karen Etheridge <ether@cpan.org>

       •   Florian Ragwitz <rafl@debian.org>

       •   Hans Dieter Pearcey <hdp@cpan.org>

       •   Chris Prather <chris@prather.org>

       •   Matt S Trout <mstrout@cpan.org>

Description

       This recipe demonstrates how to use Moose to subclass a parent which is not Moose based. This recipe only
       works if the parent class uses a blessed hash reference for object instances. If your parent is doing
       something funkier, you should check out MooseX::NonMoose::InsideOut and MooseX::InsideOut.

       The meat of this recipe is contained in MooseX::NonMoose, which does all the grunt work for you.

Name

       Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent - Extending a non-Moose parent class

Synopsis

         package My::DateTime;

         use Moose;
         use MooseX::NonMoose;
         use DateTime::Calendar::Mayan;
         extends qw( DateTime );

         has 'mayan_date' => (
             is        => 'ro',
             isa       => 'DateTime::Calendar::Mayan',
             init_arg  => undef,
             lazy      => 1,
             builder   => '_build_mayan_date',
             clearer   => '_clear_mayan_date',
             predicate => 'has_mayan_date',
         );

         after 'set' => sub {
             $_[0]->_clear_mayan_date;
         };

         sub _build_mayan_date {
             DateTime::Calendar::Mayan->from_object( object => $_[0] );
         }

Version

       version 2.2207

See Also