File Coverage

blib/lib/XML/Toolkit/Cmd/ClassTemplate.pm
Criterion Covered Total %
statement 4 4 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 6 6 100.0


line stmt bran cond sub pod time code
1             package XML::Toolkit::Cmd::ClassTemplate;
2             {
3             $XML::Toolkit::Cmd::ClassTemplate::VERSION = '0.15';
4             }
5 2     2   1559 use Moose::Role;
  2         5  
  2         15  
6              
7             has template => (
8             isa => 'Str',
9             is => 'ro',
10             lazy_build => 1,
11             );
12              
13             sub _build_template {
14 9     9   388 return <<'END_TEMPLATE';
15             package [% meta.name %];
16             use Moose;
17             use namespace::autoclean;
18             use XML::Toolkit;
19              
20             [% FOREACH attr_name IN meta.get_attribute_list.sort -%]
21             [% attr = meta.get_attribute(attr_name) -%]
22             has '[% attr_name %]' => (
23             isa => '[% attr.type_constraint.name %]',
24             is => '[% IF attr.has_accessor %]rw[% ELSE %]ro[%END%]',
25             [%- IF attr.type_constraint.is_subtype_of("ArrayRef") %]
26             init_arg => '[% attr_name.remove("_collection") %]s',
27             traits => [qw(XML Array)],
28             lazy => 1,
29             auto_deref => 1,
30             default => sub { [] },
31             handles => { add_[% attr_name.remove("_collection") %] => ['push'] },
32             [%- ELSE %]
33            
34             traits => [ 'XML'],
35             [% END -%]
36             description => {
37             [% FOREACH name IN attr.description.keys -%]
38             [% name %] => "[% attr.description.$name %]",
39             [% END -%]
40             sort_order => [% loop.index() %],
41             },
42             );
43             [% END -%]
44             1;
45              
46             END_TEMPLATE
47              
48             }
49              
50             1;
51             __END__