MouseX::NativeTraits - Extend your attribute interfaces for Mouse


MouseX-NativeTraits documentation  | view source Contained in the MouseX-NativeTraits distribution.

Index


NAME

Top

MouseX::NativeTraits - Extend your attribute interfaces for Mouse

VERSION

Top

This document describes MouseX::NativeTraits version 1.04.

SYNOPSIS

Top

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

DESCRIPTION

Top

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 extention is compatible with Moose native traits, although it is not a part of Mouse core.

PARAMETERS

Top

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.

NATIVE TRAITS

Top

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.

DEPENDENCIES

Top

Perl 5.6.2 or later.

BUGS

Top

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.

SEE ALSO

Top

Mouse

MouseX::AttributeHelpers

Moose

Moose::Meta::Attribute::Native

MooseX::AttributeHelpers

AUTHORS

Top

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

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

LICENSE AND COPYRIGHT

Top


MouseX-NativeTraits documentation  | view source Contained in the MouseX-NativeTraits distribution.