MouseX::NativeTraits3pm
Extend your attribute interfaces for mouse
Usage
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.
Overview
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.
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".
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.
Dependencies
Perl 5.6.2 or later.
License and copyright
Copyright (c) 2010, Goro Fuji (gfx), mostly based on Moose, which is (c) 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. See perlartistic for details.
Releases
7 releases since Debian 7 (Wheezy); the text changed 3 times.