Add built local::lib
[catagits/Gitalist.git] / local-lib5 / lib / perl5 / Parse / Method / Signatures / Types.pm
CommitLineData
3fea05b9 1use strict;
2use warnings;
3
4package Parse::Method::Signatures::Types;
5
6use Moose::Util::TypeConstraints;
7use MooseX::Types::Moose qw/Str ArrayRef/;
8use namespace::clean;
9
10use MooseX::Types -declare => [qw/
11 VariableName
12 TypeConstraint
13 Param
14 ParamCollection
15 PositionalParam
16 NamedParam
17 UnpackedParam
18/];
19
20subtype VariableName,
21 as Str,
22 where { /^[\$@%](?:[a-z_][a-z_\d]*)?$/i },
23 message { 'not a valid variable name' };
24
25subtype TypeConstraint,
26 as 'Moose::Meta::TypeConstraint';
27
28class_type Param, { class => 'Parse::Method::Signatures::Param' };
29
30class_type ParamCollection, { class => 'Parse::Method::Signatures::ParamCollection' };
31
32coerce ParamCollection,
33 from ArrayRef,
34 via { Parse::Method::Signatures::ParamCollection->new(params => $_) };
35
36role_type PositionalParam, { role => 'Parse::Method::Signatures::Param::Positional' };
37role_type NamedParam, { role => 'Parse::Method::Signatures::Param::Named' };
38role_type UnpackedParam, { role => 'Parse::Method::Signatures::Param::Unpacked' };
39
401;