Aion

 view release on metacpan or  search on metacpan

lib/Aion/Type.md  view on Meta::CPAN


## superset ($type)

Определяет, что он является надмножеством указанного типа.

## subproper ($other)

Тип является строгим подмножеством другого.

## superproper ($other)

Тип является строгим надмножеством другого.

## equals ($other)

Тип эквивалентен другому типу.

## differs ($other)

Тип не эквивалентен другому типу.

## disjoint ($other)

Тип не имеет пересечений с другим типом.

## intersects ($other)

Тип имеет пересечение или пересечения с другим типом.

## make ($pkg)

Создаёт подпрограмму без аргументов, которая возвращает тип.

```perl
BEGIN {
	Aion::Type->new(name=>"Rim", test => sub { /^[IVXLCDM]+$/i })->make(__PACKAGE__);
}

"IX" ~~ Rim	 # => 1
```

Если указан `init` то при каждом использовании подпрограммы будет создаваться тип и инициализироваться.

```perl
eval { Aion::Type->new(name=>"Rim", init => sub {...})->make(__PACKAGE__) }; $@ # ~> init_where won't work in Rim
```

Если подпрограмма не может быть создана, то выбрасывается исключение.

```perl
eval { Aion::Type->new(name=>"Rim")->make }; $@ # ~> syntax error
```

## make_arg ($pkg)

Создает подпрограмму с аргументами, которая возвращает тип.

```perl
BEGIN {
	Aion::Type->new(name=>"Len", test => sub {
		$Aion::Type::SELF->{args}[0] <= length($_) && length($_) <= $Aion::Type::SELF->{args}[1]
	})->make_arg(__PACKAGE__, 1);
}

"IX" ~~ Len[2,2] # => 1
```

Если подпрограмма не может быть создана, то выбрасывается исключение.

```perl
eval { Aion::Type->new(name=>"Rim")->make_arg }; $@ # ~> syntax error
```

## make_maybe_arg ($pkg)

Создает подпрограмму с аргументами или без.

```perl
BEGIN {
	Aion::Type->new(
		name => "Enum123",
		test => sub { $_ ~~ [1,2,3] },
		a_test => sub { $_ ~~ $Aion::Type::SELF->{args} },
	)->make_maybe_arg(__PACKAGE__);
}

3 ~~ Enum123        # -> 1
3 ~~ Enum123[4,5,6] # -> ""
5 ~~ Enum123[4,5,6] # -> 1
```

Если подпрограмма не может быть создана, то выбрасывается исключение.

```perl
eval { Aion::Type->new(name=>"Rim")->make_maybe_arg }; $@ # ~> syntax error
```

## args ()

Список аргументов.

## name ()

Имя типа.

## as ()

Родительский тип.

## message (;&message)

Акцессор сообщения. Использует `&message` для генерации сообщения об ошибке.

## title (;$title)

Акцессор заголовка (используется для создания схемы **swagger**).

## description (;$description)

Акцессор описания (используется для создания схемы **swagger**).



( run in 0.661 second using v1.01-cache-2.11-cpan-aadc1410aed )