do not include .git directory
[catagits/Reaction.git] / lib / Reaction / UI / ViewPort / Field / Array.pm
CommitLineData
ddccc6a2 1package Reaction::UI::ViewPort::Field::Array;
7adfd53f 2
3use Reaction::Class;
4use Scalar::Util 'blessed';
7b5e71ad 5
6extends 'Reaction::UI::ViewPort::Field';
7adfd53f 7
81393881 8use namespace::clean -except => [ qw(meta) ];
7adfd53f 9
7b5e71ad 10use MooseX::Types::Moose qw/Str ArrayRef/;;
7adfd53f 11
7b5e71ad 12has '+value' => (isa => ArrayRef);
7adfd53f 13
7b5e71ad 14has value_names => (isa => ArrayRef, is => 'ro', lazy_build => 1);
81393881 15has value_map_method => (
7b5e71ad 16 isa => Str, is => 'ro', required => 1, default => sub { 'display_name' },
81393881 17);
7b5e71ad 18
81393881 19sub _build_value_names {
20 my $self = shift;
21 my $meth = $self->value_map_method;
22 my @names = map { blessed($_) ? $_->$meth : $_ } @{ $self->value };
23 return [ sort @names ];
7b5e71ad 24}
25
26sub _empty_value { [] }
27
81393881 28__PACKAGE__->meta->make_immutable;
29
7adfd53f 30
311;