<%ARGS>
$name => undef
$check => undef
$mode => 'view'
$prop => {}
%ARGS>
<%INIT>
# тут надо копию массива... иначе push @{$status_map} ломает default значения в $prop->{cases} или в $keeper->default_status()
my $status_map = [ @{ref $prop->{cases} eq 'ARRAY' ? $prop->{cases} : $keeper->default_status()} ];
if ($mode eq 'get') {
return $status_map;
}
if (defined $check) {
unless (grep {$_->[0] eq $check} @{$status_map}) {
push @{$status_map}, [$check, "$check [unknown value]"];
}
}
%INIT>