Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MooseX::Has::Options(3User Contributed Perl DocumentatiMooseX::Has::Options(3)

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:

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

       o   MooseX::Has::Options::Handler::NativeTypes

       o   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
       o   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.

perl v5.32.0			  2012-11-12	       MooseX::Has::Options(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | USAGE | IMPLEMENTATION DETAILS | DEPRECATED BEHAVIOUR | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=MooseX::Has::Options&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help