Provided by: libmoosex-has-options-perl_0.003-1_all bug

NAME

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

VERSION

       version 0.003

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.

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;

       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.

       The default behaviour can be customised per attribute. For example, here is how "ro", "rw"
       and "bare" work:

           has 'some_attribute', ':ro';

       becomes:

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

       See below for details.

   Handlers
       "MooseX::Has::Options" allows you to expand specific 'shortcut' arguments to arbitrary
       values via the handler interface. A 'handler' is a module in the
       MooseX::Has::Options::Handler namespace that provides a "handler" function. The handler
       function should return a hash whose keys are shortcut names, and the values are hashrefs
       with the values that the respective shortcuts should be expanded to. In order to enable
       the shortcuts supplied by a given handler you need to add it in the import statement:

           use MooseX::Has::Options qw(NativeTypes);

           has 'some_attribute', qw(:ro :hash), default => sub {{ foo => bar }};

       The following handlers ship with the default distribution:

       •   MooseX::Has::Options::Handler::Accessors (included by default when you import this
           module)

       •   MooseX::Has::Options::Handler::NativeTypes

       •   MooseX::Has::Options::Handler::NoInit

IMPLEMENTATION DETAILS

       "MooseX::Has::Options" hijacks the "has" function imported by Moose and replaces it with
       one that understands the options syntax described above. This is not an optimal solution,
       but the current implementation of "Moose::Meta::Attribute" prevents this functionality
       from being provided as a meta trait.

DEPRECATED BEHAVIOUR

       Previous versions of "MooseX::Has::Params" allowed you to specify during import the name
       of the function too hook into, like so:

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

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

       This behaviour is deprecated as of version 0.003 as this syntax is now used for specifying
       handlers. If you need to hook into a different function see the implementation of
       "MooseX::Has::Options::import()" and "MooseX::Has::Options::import_into()".

SEE ALSO

       •   MooseX::Has::Sugar

AUTHOR

       Peter Shangov <pshangov@yahoo.com>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2012 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.