Moose::Meta::Attribute::Native(3pm) - phpMan

Command: man perldoc info search(apropos)  


Moose::Meta::Attribute::Native(User Contributed Perl DocumentaMoose::Meta::Attribute::Native(3pm)



NAME
       Moose::Meta::Attribute::Native - Extend your attribute interfaces

SYNOPSIS
         package MyClass;
         use Moose;

         has 'mapping' => (
             traits    => [ 'Hash' ],
             is        => 'rw',
             isa       => 'HashRef[Str]',
             default   => sub { {} },
             handles   => {
                 exists_in_mapping => 'exists',
                 ids_in_mapping    => 'keys',
                 get_mapping       => 'get',
                 set_mapping       => 'set',
                 set_quantity      => [ set => 'quantity' ],
             },
         );


         # ...

         my $obj = MyClass->new;
         $obj->set_quantity(10);      # quantity => 10
         $obj->set_mapping('foo', 4); # foo => 4
         $obj->set_mapping('bar', 5); # bar => 5
         $obj->set_mapping('baz', 6); # baz => 6


         # prints 5
         print $obj->get_mapping('bar') if $obj->exists_in_mapping('bar');

         # prints 'quantity, foo, bar, baz'
         print join ', ', $obj->ids_in_mapping;

DESCRIPTION
       While Moose attributes provide a way to name your accessors, readers, writers, clearers
       and predicates, this set of traits provides commonly used attribute helper methods for
       more specific types of data.

       As seen in the "SYNOPSIS", you specify the data structure via the "trait" parameter.
       Available traits are below; see "METHOD PROVIDERS".

       This module used to exist as the MooseX::AttributeHelpers extension. It was very commonly
       used, so we moved it into core Moose. Since this gave us a chance to change the interface,
       you will have to change your code or continue using the MooseX::AttributeHelpers
       extension. MooseX::AttributeHelpers should continue to work.

PARAMETERS
   handles
       This is like "handles" in "has" in Moose, but only HASH references are allowed.  Keys are
       method names that you want installed locally, and values are methods from the method
       providers (below).  Currying with delegated methods works normally for "handles".

METHOD PROVIDERS
       Number
           Common numerical operations.

               has 'integer' => (
                   traits    => ['Number'],
                   is        => 'ro',
                   isa       => 'Int',
                   default   => 5,
                   handles   => {
                       set => 'set',
                       add => 'add',
                       sub => 'sub',
                       mul => 'mul',
                       div => 'div',
                       mod => 'mod',
                       abs => 'abs',
                   }
               );

       String
           Common methods for string operations.

               has 'text' => (
                   traits    => ['String'],
                   is        => 'rw',
                   isa       => 'Str',
                   default   => q{},
                   handles   => {
                       add_text     => 'append',
                       replace_text => 'replace',
                   }
               );

       Counter
           Methods for incrementing and decrementing a counter attribute.

               has 'counter' => (
                   traits    => ['Counter'],
                   is        => 'ro',
                   isa       => 'Num',
                   default   => 0,
                   handles   => {
                       inc_counter   => 'inc',
                       dec_counter   => 'dec',
                       reset_counter => 'reset',
                   }
               );

       Bool
           Common methods for boolean values.

               has 'is_lit' => (
                   traits    => ['Bool'],
                   is        => 'rw',
                   isa       => 'Bool',
                   default   => 0,
                   handles   => {
                       illuminate  => 'set',
                       darken      => 'unset',
                       flip_switch => 'toggle',
                       is_dark     => 'not',
                   }
               );

       Hash
           Common methods for hash references.

               has 'options' => (
                   traits    => ['Hash'],
                   is        => 'ro',
                   isa       => 'HashRef[Str]',
                   default   => sub { {} },
                   handles   => {
                       set_option => 'set',
                       get_option => 'get',
                       has_option => 'exists',
                   }
               );

       Array
           Common methods for array references.

               has 'queue' => (
                  traits     => ['Array'],
                  is         => 'ro',
                  isa        => 'ArrayRef[Str]',
                  default    => sub { [] },
                  handles    => {
                      add_item  => 'push',
                      next_item => 'shift',
                  }
               );

       Code
           Common methods for code references.

               has 'callback' => (
                  traits     => ['Code'],
                  is         => 'ro',
                  isa        => 'CodeRef',
                  default    => sub { sub { 'called' } },
                  handles    => {
                      call => 'execute',
                  }
               );

BUGS
       All complex software has bugs lurking in it, and this module is no exception. If you find
       a bug please either email me, or add the bug to cpan-RT.

AUTHOR
       Stevan Little <stevan AT iinteractive.com>

       with contributions from:

       Robert (rlb3) Boone

       Paul (frodwith) Driver

       Shawn (Sartak) Moore

       Chris (perigrin) Prather

       Robert (phaylon) Sedlacek

       Tom (dec) Lanyon

       Yuval Kogman

       Jason May

       Cory (gphat) Watson

       Florian (rafl) Ragwitz

       Evan Carroll

       Jesse (doy) Luehrs

COPYRIGHT AND LICENSE
       Copyright 2007-2009 by Infinity Interactive, Inc.

       <http://www.iinteractive.com>

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



perl v5.10.0                                2009-11-18        Moose::Meta::Attribute::Native(3pm)

Generated by $Id: phpMan.php,v 4.49 2006/02/26 13:18:18 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2012-05-24 19:35 @38.107.179.237 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
Valid XHTML 1.0!Valid CSS!