The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

MooseX::Has::Options - Succinct options for Moose

VERSION

version 0.002

SYNOPSIS

    use Moose;
    use MooseX::Has::Options;

    has 'some_attribute' => (
        qw(:ro :required),
        isa => 'Str',
        ...
    );

    has 'another_attribute' => (
        qw(:ro :lazy_build),
        isa => 'Str',
        ...
    );

DESCRIPTION

This module provides a succinct syntax for declaring options for Moose attributes. It hijacks the has function imported by Moose and replaces it with one that understands the options syntax described above.

USAGE

Declaring options

MooseX::Has::Params works by checking the arguments to has for strings that look like options, i.e. alphanumeric strings preceded by a colon, and replaces them with a hash whose keys are the names of the options (sans the colon) and the values are 1's. Thus,

    has 'some_attribute', ':required';

becomes:

    has 'some_attribute', required => 1;

The options ro, rw and bare are treated differently:

    has 'some_attribute', ':ro';

becomes:

    has 'some_attribute', is => 'ro';

Options must come in the beginning of the argument list. MooseX::Has::Options will stop searching for options after the first alphanumeric string that does not start with a colon.

Importing

MooseX::Has::Params hooks into a has function that already exists in your module's namespace. Therefore it must be imported after Moose. A side effect of this is that it will work with any module that provides a has function, e.g. Mouse.

If you specify arguments when importing MooseX::Has::Params, it will hook to these functions instead. Use this to change the behavior of functions that provide a syntax similar to Moose attributes:

    use HTML::FormHandler::Moose;
    use MooseX::Has::Options qw(has_field);

    has_field 'name' => (
        qw(:required),
        type => 'Text',
    );

The special treatment of ro, rw and bare will be disabled for such functions.

SEE ALSO

AUTHOR

Peter Shangov <pshangov@yahoo.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Peter Shangov.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.