logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

MouseX::NativeTraits - Extend your attribute interfaces for Mouse

Authors

       Goro Fuji (gfx) <gfuji(at)cpan.org>

       This module is based on Moose native traits written by Stevan Little and others.

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.

Dependencies

       Perl 5.6.2 or later.

Description

       While Mouse attributes provide a way to name your accessors, readers, writers, clearers and predicates,
       MouseX::NativeTraits provides commonly used attribute helper methods for more specific types of data.

       As seen in the "SYNOPSIS", you specify the data structure via the "traits" parameter. These traits will
       be loaded automatically, so you need not load MouseX::NativeTraits explicitly.

       This extension is compatible with Moose native traits, although it is not a part of Mouse core.

Name

       MouseX::NativeTraits - Extend your attribute interfaces for Mouse

Native Traits

Array
       Common methods for array references.

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

       See MouseX::NativeTraits::ArrayRef.

   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',
               }
           );

       See MouseX::NativeTraits::HashRef.

   Code
       Common methods for code references.

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

       See MouseX::NativeTraits::CodeRef.

   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',
               }
           );

       See MouseX::NativeTraits::Bool.

   String
       Common methods for string operations.

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

       See MouseX::NativeTraits::Str.

   Number
       Common numerical operations.

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

       See MouseX::NativeTraits::Num.

   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',
               }
           );

       See MouseX::NativeTraits::Counter.

Parameters

handles
       This is like "handles" in "has" in Mouse, 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".

See Also

       Mouse

       MouseX::AttributeHelpers

       Moose

       Moose::Meta::Attribute::Native

       MooseX::AttributeHelpers

Synopsis

           package MyClass;
           use Mouse;

           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' ],
               },
           );

Version

       This document describes MouseX::NativeTraits version 1.09.

See Also