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 )