X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FReaction%2FUI%2FViewPort%2FField%2FArray.pm;h=ed9ddebfe984bdb0dc587d8e20051aba9a3add72;hb=565a1fc7fe67c721f2766bdc3f55c5fcb33fc760;hp=1b7c7d8dbd122d8dc60a9601ae6cdb80e65b5c81;hpb=ddccc6a29affc90888a59f14d698fd3afb2757dc;p=catagits%2FReaction.git diff --git a/lib/Reaction/UI/ViewPort/Field/Array.pm b/lib/Reaction/UI/ViewPort/Field/Array.pm index 1b7c7d8..ed9ddeb 100644 --- a/lib/Reaction/UI/ViewPort/Field/Array.pm +++ b/lib/Reaction/UI/ViewPort/Field/Array.pm @@ -2,24 +2,30 @@ package Reaction::UI::ViewPort::Field::Array; use Reaction::Class; use Scalar::Util 'blessed'; -use aliased 'Reaction::UI::ViewPort::Field'; -class Array is Field, which { - has '+value' => (isa => 'ArrayRef'); +extends 'Reaction::UI::ViewPort::Field'; - has value_names => (isa => 'ArrayRef', is => 'ro', lazy_build => 1); - has value_map_method => ( - isa => 'Str', is => 'ro', required => 1, default => sub { 'display_name' }, - ); +use namespace::clean -except => [ qw(meta) ]; - implements _build_value_names => as { - my $self = shift; - my @all = @{ $self->value || []}; - my $meth = $self->value_map_method; - my @names = map { blessed($_) ? $_->$meth : $_ } @all; - return [ sort @names ]; - }; +use MooseX::Types::Moose qw/Str ArrayRef/;; + +has '+value' => (isa => ArrayRef); + +has value_names => (isa => ArrayRef, is => 'ro', lazy_build => 1); +has value_map_method => ( + isa => Str, is => 'ro', required => 1, default => sub { 'display_name' }, +); + +sub _build_value_names { + my $self = shift; + my $meth = $self->value_map_method; + my @names = map { blessed($_) ? $_->$meth : $_ } @{ $self->value }; + return [ sort @names ]; +} + +sub _empty_value { [] } + +__PACKAGE__->meta->make_immutable; -}; 1;