remove autogen stuff and add author_tests() to Makefile.pl
[gitmo/MooseX-MetaDescription.git] / blib / lib / MooseX / MetaDescription / Meta / Trait.pm
CommitLineData
b7cd1593 1package MooseX::MetaDescription::Meta::Trait;
2use Moose::Role;
3
4our $VERSION = '0.01';
5our $AUTHORITY = 'cpan:STEVAN';
6
7has 'description' => (
8 is => 'ro',
9 isa => 'HashRef',
10 lazy => 1,
11 default => sub { +{} },
12);
13
14has 'metadescription_classname' => (
15 is => 'ro',
16 isa => 'Str',
17 lazy => 1,
18 default => sub {
19 'MooseX::MetaDescription::Description'
20 }
21);
22
23has 'metadescription' => (
24 is => 'ro',
25 isa => 'MooseX::MetaDescription::Description',
26 lazy => 1,
27 default => sub {
28 my $self = shift;
29
30 my $metadesc_class = $self->metadescription_classname;
31 my $desc = $self->description;
32
33 if (my $traits = delete $desc->{traits}) {
34 my $meta = Moose::Meta::Class->create_anon_class(
35 superclasses => [ $metadesc_class ],
36 roles => $traits,
37 );
38 $meta->add_method('meta' => sub { $meta });
39 $metadesc_class = $meta->name;
40 }
41
42 return $metadesc_class->new(%$desc, descriptor => $self);
43 },
44);
45
46no Moose::Role; 1;
47
48__END__
49
50=pod
51
52=head1 NAME
53
54MooseX::MetaDescription::Meta::Trait - A Moosey solution to this problem
55
56=head1 SYNOPSIS
57
58 use MooseX::MetaDescription::Meta::Trait;
59
60=head1 DESCRIPTION
61
62=head1 METHODS
63
64=over 4
65
66=item B<>
67
68=back
69
70=head1 BUGS
71
72All complex software has bugs lurking in it, and this module is no
73exception. If you find a bug please either email me, or add the bug
74to cpan-RT.
75
76=head1 AUTHOR
77
78Stevan Little E<lt>stevan.little@iinteractive.comE<gt>
79
80=head1 COPYRIGHT AND LICENSE
81
82Copyright 2008 Infinity Interactive, Inc.
83
84L<http://www.iinteractive.com>
85
86This library is free software; you can redistribute it and/or modify
87it under the same terms as Perl itself.
88
89=cut