summaryrefslogtreecommitdiff
path: root/lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm
blob: 36b7cf984a8171f2a9f56c0d9165ee1f96c7f223 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package Data::MultiValued::AttributeTrait::TagsAndRanges; 
use Moose::Role;
use namespace::autoclean;
use Data::MultiValued::TagsAndRanges;
with 'Data::MultiValued::AttributeTrait';
 
# ABSTRACT: attribute traits for attributes holding tagged and ranged values 
 
=head1 SYNOPSIS
 
  package My::Class;
  use Moose;
  use Data::MultiValued::AttributeTrait::TagsAndRanges;
 
  has stuff => (
    is => 'rw',
    isa => 'Int',
    traits => ['MultiValued::TagsAndRanges'],
    predicate => 'has_stuff',
    multi_accessor => 'stuff_tagged',
    multi_predicate => 'has_stuff_tagged',
  );
 
=head1 DESCRIPTION
 
This role consumes L<Data::MultiValued::AttributeTrait> and
specialises it to use L<Data::MultiValued::TagsAndRanges> as multi-value
storage:
 
=head2 C<multivalue_storage_class>
 
Returns C<'Data::MultiValued::TagsAndRanges'>.
 
=head2 C<opts_to_pass_set>
 
Returns C<('tag', 'from', 'to')>.
 
=head2 C<opts_to_pass_get>
 
Returns C<('tag', 'at')>.
 
=cut
 
sub multivalue_storage_class 'Data::MultiValued::TagsAndRanges' };
sub opts_to_pass_set qw(from to tag) }
sub opts_to_pass_get qw(at tag) }
 
package Moose::Meta::Attribute::Custom::Trait::MultiValued::TagsAndRanges;{ 
sub register_implementation 'Data::MultiValued::AttributeTrait::TagsAndRanges' }
}
 
1;