The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

MooseX::NewDefaults - Alter attribute defaults with less pain

VERSION

version 0.003

SYNOPSIS

    package One;
    use Moose;
    use namespace::autoclean;

    has A => (is => 'ro', default => sub { 'say ahhh' });
    has B => (is => 'ro', default => sub { 'say whoo' });

    package Two;
    use Moose;
    use namespace::autoclean;
    use MooseX::NewDefaults;

    # sugar for defining a new default
    default_for A => sub { 'say oooh' };

    # this is also legal
    default_for B => 'say oooh';

DESCRIPTION

Ever start using a package from the CPAN, only to discover that it requires lots of subclassing and "has '+foo' => (default => ...)"? It's not recommended Moose best practice, and it's certanly not the prettiest thing ever, either.

That's where we come in.

This package introduces new sugar that you can use in the baseclass, default_for (as seen above).

e.g.

    has '+foo' => (default => sub { 'a b c' });

...is the same as:

    default_for foo => sub { 'a b c' };

NEW SUGAR

default_for

default_for() is a shortcut to extend an attribute to give it a new default; this default value may be any legal value for default options.

    # attribute bar defined elsewhere (e.g. superclass)
    default_for bar => 'new default';

... is the same as:

    has '+bar' => (default => 'new default');

BUGS

All complex software has bugs lurking in it, and this module is no exception.

Bugs, feature requests and pull requests through GitHub are most welcome; our page and repo (same URI):

    https://github.com/RsrchBoy/moosex-newdefaults

AUTHOR

Chris Weyl <cweyl@alumni.drew.edu>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2011 by Chris Weyl.

This is free software, licensed under:

  The GNU Lesser General Public License, Version 2.1, February 1999