File Coverage

blib/lib/Mite/Types.pm
Criterion Covered Total %
statement 12 12 100.0
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 16 16 100.0


line stmt bran cond sub pod time code
1             package Mite::Types;
2              
3 124     124   1187 use strict;
  124         519  
  124         4421  
4 124     124   992 use warnings;
  124         664  
  124         9549  
5             use Type::Library 1.012
6 124         1925 -extends => [ qw(
7             Types::Standard
8             Types::Common::String
9             Types::Path::Tiny
10             ) ],
11             -declare => qw(
12             One MethodName MethodNameTemplate ValidClassName HandlesHash AliasList
13             MiteRole MiteClass MiteAttribute MiteProject MiteSource MiteCompiled
14             MiteConfig MiteSignature MitePackage
15 124     124   67498 );
  124         4638366  
16              
17 124     124   23908956 use Types::Standard 'slurpy';
  124         400  
  124         954  
18             push our @EXPORT_OK, 'slurpy';
19              
20             __PACKAGE__->add_type(
21             name => One,
22             parent => Enum[ "1" ],
23             );
24              
25             __PACKAGE__->add_type(
26             name => MethodName,
27             parent => Str->where( q{ /\A[^\W0-9]\w*\z/ } ),
28             );
29              
30             __PACKAGE__->add_type(
31             name => MethodNameTemplate,
32             parent => MethodName | Str->where( q{ /\%/ } ),
33             );
34              
35             __PACKAGE__->add_type(
36             name => ValidClassName,
37             parent => Str->where( q{ /\A[^\W0-9]\w*(?:::[^\W0-9]\w*)*\z/ } ),
38             );
39              
40             __PACKAGE__->add_type(
41             name => MiteProject,
42             parent => InstanceOf[ 'Mite::Project' ],
43             display_name => 'Mite::Project',
44             );
45              
46             __PACKAGE__->add_type(
47             name => MiteConfig,
48             parent => InstanceOf[ 'Mite::Config' ],
49             display_name => 'Mite::Config',
50             );
51              
52             __PACKAGE__->add_type(
53             name => MiteSource,
54             parent => InstanceOf[ 'Mite::Source' ],
55             display_name => 'Mite::Source',
56             );
57              
58             __PACKAGE__->add_type(
59             name => MiteSignature,
60             parent => InstanceOf[ 'Mite::Signature' ],
61             display_name => 'Mite::Signature',
62             );
63              
64             __PACKAGE__->add_type(
65             name => MiteCompiled,
66             parent => InstanceOf[ 'Mite::Compiled' ],
67             display_name => 'Mite::Compiled',
68             );
69              
70             __PACKAGE__->add_type(
71             name => MiteRole,
72             parent => InstanceOf[ 'Mite::Role' ],
73             display_name => 'Mite::Role',
74             );
75              
76             __PACKAGE__->add_type(
77             name => MiteClass,
78             parent => InstanceOf[ 'Mite::Class' ],
79             display_name => 'Mite::Class',
80             );
81              
82             __PACKAGE__->add_type(
83             name => MitePackage,
84             parent => InstanceOf[ 'Mite::Package' ],
85             display_name => 'Mite::Package',
86             );
87              
88             __PACKAGE__->add_type(
89             name => MiteAttribute,
90             parent => InstanceOf[ 'Mite::Attribute' ],
91             display_name => 'Mite::Attribute',
92             );
93              
94             __PACKAGE__->add_type(
95             name => HandlesHash,
96             parent => Map[ MethodNameTemplate, MethodName | ArrayRef | CodeRef ],
97             )->coercion->add_type_coercions(
98             ArrayRef, q{ +{ map { $_ => $_ } @$_ } },
99             );
100              
101             __PACKAGE__->add_type(
102             name => AliasList,
103             parent => ArrayRef[ MethodNameTemplate ],
104             )->coercion->add_type_coercions(
105             Str, q{ [$_] },
106             Undef, q{ [] },
107             );
108              
109             __PACKAGE__->make_immutable;
110              
111             1;