NAME

Reindeer - Moose with more antlers

VERSION

version 0.003

SYNOPSIS

# ta-da!
use Reindeer;

# ...is the same as:
use Moose;
use MooseX::MarkAsMethods autoclean => 1;
use MooseX::AlwaysCoerce;
use MooseX::AttributeShortcuts;
# etc, etc, etc

DESCRIPTION

Like Moose? Use MooseX::* extensions? Maybe some MooseX::Types libraries? Hate that you have to use them in every. Single. Class.

Reindeer aims to resolve that :) Reindeer _is_ Moose -- it's just Moose with a number of the more useful/popular extensions already applied. Reindeer is a drop-in replacement for your "use Moose" line, that behaves in the exact same way... Just with more pointy antlers.

AVAILABLE ATTRIBUTE TRAITS

We make available the following trait aliases. These traits are NOT automatically applied to attributes, and can be used as:

has foo => (traits => [ AutoDestruct ], ...);

AutoDestruct

has foo => (
    traits  => [ AutoDestruct ],
    is      => 'ro',
    lazy    => 1,
    builder => 1,
    ttl     => 600,
);

Allows for a "ttl" attribute option; this is the length of time (in seconds) that a stored value is allowed to live; after that time the value is cleared and the value rebuilt (given that the attribute is lazy and has a builder defined).

See MooseX::AutoDestruct for more information.

MultiInitArg

has 'data' => ( traits => [ MultiInitArg ], is => 'ro', isa => 'Str', init_args => [qw(munge frobnicate)], );

This trait allows your attribute to be initialized with any one of multiple arguments to new().

See MooseX::MultiInitArg for more information.

UndefTolerant

INCLUDED EXTENSIONS

Reindeer includes the traits and sugar provided by the following extensions. Everything their docs say they can do, you can do by default with Reindeer.

MooseX::AbstractMethod

MooseX::AlwaysCoerce

MooseX::AttributeShortcuts

MooseX::MarkAsMethods

Note that this causes any overloads you've defined in your class/role to be marked as methods, and namespace::autoclean invoked.

MooseX::NewDefaults

MooseX::StrictConstructor

INCLUDED TYPE LIBRARIES

MooseX::Types::Moose

MooseX::Types::Common::String

MooseX::Types::Common::Numeric

OTHER

Non-Moose specific items made available to your class/role:

namespace::autoclean

Technically, this is done by MooseX::MarkAsMethods, but it's worth pointing out here. Any overloads present in your class/role are marked as methods before autoclean is unleashed, so Everything Will Just Work as Expected.

Try::Tiny

CAVEAT

This author is applying his own assessment of "useful/popular extensions". You may find yourself in agreement, or violent disagreement with his choices. YMMV :)

SEE ALSO

Moose, Reindeer::Role, overload. All of the above referenced packages.

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/reindeer

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