Aion-Enum
view release on metacpan or search on metacpan
lib/Aion/Enum.pm view on Meta::CPAN
push @$enum, $case;
constant->import("${pkg}::$name", $case);
return;
}
# ÐадаÑÑ ÑÐ¸Ð¿Ñ Ð´Ð»Ñ value и stash
sub issa(@) {
my $pkg = caller;
my ($nameisa, $valueisa, $stashisa, $aliasisa) = map { ref $_ eq '' ? eval "package $pkg; $_" || die : $_ } @_;
$Aion::META{$pkg}{issa} = {
name => $nameisa,
value => $valueisa,
stash => $stashisa,
alias => $aliasisa,
};
return;
}
#@category ÐеÑеÑиÑлениÑ
# ÐеÑеÑиÑлениÑ
sub cases {
my ($cls) = @_;
@{$Aion::META{ref $cls || $cls}{enum}}
}
# Ðмена
sub names {
my ($cls) = @_;
map $_->{name}, $cls->cases
}
# ÐнаÑениÑ
sub values {
my ($cls) = @_;
map $_->{value}, $cls->cases
}
# ÐополнениÑ
sub stashes {
my ($cls) = @_;
map $_->{stash}, $cls->cases
}
# ÐÑевдонимÑ
sub aliases {
my ($cls) = @_;
map $_->alias, $cls->cases
}
my %ALIAS;
sub _alias {
my ($cls) = @_;
$cls = ref $cls || $cls;
my $alias_ref = $ALIAS{$cls};
return $alias_ref if $alias_ref;
( run in 0.553 second using v1.01-cache-2.11-cpan-140bd7fdf52 )