Aion-Enum
view release on metacpan or search on metacpan
Aion::Enum - пеÑеÑиÑÐ»ÐµÐ½Ð¸Ñ Ð² ÑÑиле ÐÐÐ, когда каждое пеÑеÑÑление ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом
# VERSION
0.0.3
# SYNOPSIS
Файл lib/StatusEnum.pm:
```perl
package StatusEnum;
use Aion::Enum;
# Active status
case active => 1, 'Active';
# Passive status
case passive => 2, 'Passive';
1;
```
```perl
use StatusEnum;
&StatusEnum::active->does('Aion::Enum') # => 1
StatusEnum->active->name # => active
StatusEnum->passive->value # => 2
StatusEnum->active->alias # => Active status
StatusEnum->passive->stash # => Passive
[ StatusEnum->cases ] # --> [StatusEnum->active, StatusEnum->passive]
[ StatusEnum->names ] # --> [qw/active passive/]
[ StatusEnum->values ] # --> [qw/1 2/]
[ StatusEnum->aliases ] # --> ['Active status', 'Passive status']
[ StatusEnum->stashes ] # --> [qw/Active Passive/]
```
# DESCRIPTION
`Aion::Enum` позволÑÐµÑ ÑоздаваÑÑ Ð¿ÐµÑеÑиÑлениÑ-обÑекÑÑ. ÐаннÑе пеÑеÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ ÑодеÑжаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе меÑÐ¾Ð´Ñ Ð¸ ÑвойÑÑва. РниÑ
можно доб...
Ðажной оÑобенноÑÑÑÑ ÑвлÑеÑÑÑ ÑоÑ
Ñанение поÑÑдка пеÑеÑиÑлениÑ.
`Aion::Enum` подобен пеÑеÑиÑлениÑм из php8, но Ð¸Ð¼ÐµÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑвойÑÑва `alias` и `stash`.
# SUBROUTINES
## case ($name, [$value, [$stash]])
СоздаÑÑ Ð¿ÐµÑеÑиÑление: его конÑÑанÑÑ.
```perl
package OrderEnum {
use Aion::Enum;
case 'first';
case second => 2;
case other => 3, {data => 123};
}
&OrderEnum::first->name # => first
&OrderEnum::first->value # -> undef
&OrderEnum::first->stash # -> undef
&OrderEnum::second->name # => second
&OrderEnum::second->value # -> 2
&OrderEnum::second->stash # -> undef
&OrderEnum::other->name # => other
&OrderEnum::other->value # -> 3
&OrderEnum::other->stash # --> {data => 123}
```
## issa ($nameisa, [$valueisa], [$stashisa], [$aliasisa])
УказÑÐ²Ð°ÐµÑ Ñип (isa) знаÑений и дополнений.
ÐÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ â оÑÑÑлка к богине ÐÑÑе из повеÑÑи «Ðод лÑнами ÐаÑÑа» ÐеÑÑоÑза.
```perl
eval {
package StringEnum;
use Aion::Enum;
issa Str => Int => Undef => Undef;
case active => "Active";
};
$@ # ~> active value must have the type Int. The it is 'Active'
eval {
package StringEnum;
use Aion::Enum;
issa Str => Str => Int;
case active => "Active", "Passive";
};
$@ # ~> active stash must have the type Int. The it is 'Passive'
```
Файл lib/StringEnum.pm:
```perl
package StringEnum;
use Aion::Enum;
issa Str => Undef => Undef => StrMatch[qr/^[A-Z]/];
# pushkin
case active => ;
1;
```
```perl
require StringEnum # @-> active alias must have the type StrMatch[qr/^[A-Z]/]. The it is 'pushkin'!
```
# CLASS METHODS
## cases ($cls)
СпиÑок пеÑеÑиÑлений.
```perl
[ OrderEnum->cases ] # --> [OrderEnum->first, OrderEnum->second, OrderEnum->other]
```
## names ($cls)
Ðмена пеÑеÑиÑлений.
```perl
[ OrderEnum->names ] # --> [qw/first second other/]
```
## values ($cls)
ÐнаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеÑиÑлений.
```perl
[ OrderEnum->values ] # --> [undef, 2, 3]
```
## stashes ($cls)
ÐÐ¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿ÐµÑеÑиÑлений.
```perl
[ OrderEnum->stashes ] # --> [undef, undef, {data => 123}]
```
## aliases ($cls)
ÐÑÐµÐ²Ð´Ð¾Ð½Ð¸Ð¼Ñ Ð¿ÐµÑеÑиÑлений.
Файл lib/AuthorEnum.pm:
```perl
package AuthorEnum;
use Aion::Enum;
# Pushkin Aleksandr Sergeevich
case pushkin =>;
# Yacheykin Uriy
case yacheykin =>;
case nouname =>;
1;
```
```perl
require AuthorEnum;
[ AuthorEnum->aliases ] # --> ['Pushkin Aleksandr Sergeevich', 'Yacheykin Uriy', undef]
```
## fromName ($cls, $name)
ÐолÑÑиÑÑ case по имени c иÑклÑÑением.
```perl
OrderEnum->fromName('first') # -> OrderEnum->first
eval { OrderEnum->fromName('not_exists') }; $@ # ~> Did not case with name `not_exists`!
```
## tryFromName ($cls, $name)
ÐолÑÑиÑÑ case по имени.
```perl
OrderEnum->tryFromName('first') # -> OrderEnum->first
OrderEnum->tryFromName('not_exists') # -> undef
( run in 2.126 seconds using v1.01-cache-2.11-cpan-0bb4e1dffa6 )