Aion
view release on metacpan or search on metacpan
lib/Aion/Meta/Util.pm view on Meta::CPAN
use common::sense;
use Scalar::Util qw//;
use Exporter qw/import/;
our @EXPORT = our @EXPORT_OK = grep {
my $x = $Aion::Meta::Util::{$_};
!ref $x
&& *{$x}{CODE}
&& !/^(_|(NaN|import)\z)/n
} keys %Aion::Meta::Util::;
# СоздаÑÑ Ð³ÐµÑÑеÑÑ
sub create_getters(@) {
my $pkg = caller;
eval "package $pkg; sub $_ {
die \"$_ is ro\" if \@_ > 1;
shift->{$_}
} 1" or die for @_;
}
lib/Aion/Types.md view on Meta::CPAN
## Rat
РаÑионалÑнÑе ÑиÑла.
```perl
"6/7" ~~ Rat # -> 1
"-6/7" ~~ Rat # -> 1
6 ~~ Rat # -> 1
"inf" ~~ Rat # -> 1
"+Inf" ~~ Rat # -> 1
"NaN" ~~ Rat # -> 1
"-nan" ~~ Rat # -> 1
6.5 ~~ Rat # -> 1
"6.5 " ~~ Rat # -> ''
```
## Num
ЧиÑла.
```perl
lib/Aion/Types.pm view on Meta::CPAN
use common::sense;
use Aion::Meta::Util qw/subref_is_reachable/;
use Aion::Type;
use List::Util qw/all any first/;
use Exporter qw/import/;
use Scalar::Util qw/looks_like_number reftype refaddr blessed/;
use Sub::Util qw//;
our @EXPORT = our @EXPORT_OK = grep {
*{$Aion::Types::{$_}}{CODE} && !/^(_|(NaN|import|all|any|first|looks_like_number|reftype|refaddr|blessed|subref_is_reachable)\z)/n
} keys %Aion::Types::;
# ÐбÑабаÑÑваем аÑÑибÑÑ :Isa
sub MODIFY_CODE_ATTRIBUTES {
my ($pkg, $referent, @attributes) = @_;
grep { /^Isa\((.*)\)\z/s? do { _Isa($pkg, $referent, $1); 0 }: 1 } @attributes
}
sub _Isa {
lib/Aion/Types.pm view on Meta::CPAN
=head2 Rat
Rational numbers.
"6/7" ~~ Rat # -> 1
"-6/7" ~~ Rat # -> 1
6 ~~ Rat # -> 1
"inf" ~~ Rat # -> 1
"+Inf" ~~ Rat # -> 1
"NaN" ~~ Rat # -> 1
"-nan" ~~ Rat # -> 1
6.5 ~~ Rat # -> 1
"6.5 " ~~ Rat # -> ''
=head2 Num
Numbers.
-6.5 ~~ Num # -> 1
6.5e-7 ~~ Num # -> 1
t/aion/types.t view on Meta::CPAN
# ## Rat
#
# РаÑионалÑнÑе ÑиÑла.
#
::done_testing; }; subtest 'Rat' => sub {
local ($::_g0 = do {"6/7" ~~ Rat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"6/7" ~~ Rat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"-6/7" ~~ Rat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"-6/7" ~~ Rat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {6 ~~ Rat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '6 ~~ Rat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"inf" ~~ Rat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"inf" ~~ Rat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"+Inf" ~~ Rat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"+Inf" ~~ Rat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"NaN" ~~ Rat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"NaN" ~~ Rat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"-nan" ~~ Rat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"-nan" ~~ Rat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {6.5 ~~ Rat}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '6.5 ~~ Rat # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {"6.5 " ~~ Rat}, $::_e0 = do {''}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '"6.5 " ~~ Rat # -> \'\'' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
#
# ## Num
#
# ЧиÑла.
#
::done_testing; }; subtest 'Num' => sub {
( run in 0.894 second using v1.01-cache-2.11-cpan-30a0b3e4e11 )