fixing the authors lists and adding the ClassName type constraint
[gitmo/Class-MOP.git] / lib / Class / MOP / Module.pm
1
2 package Class::MOP::Module;
3
4 use strict;
5 use warnings;
6
7 use Scalar::Util 'blessed';
8
9 our $VERSION   = '0.02';
10 our $AUTHORITY = 'cpan:STEVAN';
11
12 use base 'Class::MOP::Package';
13
14 # introspection
15
16 sub meta { 
17     require Class::MOP::Class;
18     Class::MOP::Class->initialize(blessed($_[0]) || $_[0]);
19 }
20
21 sub version {  
22     my $self = shift;
23     ${$self->get_package_symbol('$VERSION')};
24 }
25
26 sub authority {  
27     my $self = shift;
28     ${$self->get_package_symbol('$AUTHORITY')};
29 }
30
31 sub identifier {
32     my $self = shift;
33     join '-' => (
34         $self->name,
35         ($self->version   || ()),
36         ($self->authority || ()),
37     );
38 }
39
40 1;
41
42 __END__
43
44 =pod
45
46 =head1 NAME 
47
48 Class::MOP::Module - Module Meta Object
49
50 =head1 SYNOPSIS
51
52 =head1 DESCRIPTION
53
54 =head1 METHODS
55
56 =over 4
57
58 =item B<meta>
59
60 =item B<version>
61
62 This is a read-only attribute which returns the C<$VERSION> of the 
63 package for the given instance.
64
65 =item B<authority>
66
67 This is a read-only attribute which returns the C<$AUTHORITY> of the 
68 package for the given instance.
69
70 =item B<identifier>
71
72 This constructs a string of the name, version and authority.
73
74 =back
75
76 =head1 AUTHORS
77
78 Stevan Little E<lt>stevan@iinteractive.comE<gt>
79
80 =head1 COPYRIGHT AND LICENSE
81
82 Copyright 2006, 2007 by Infinity Interactive, Inc.
83
84 L<http://www.iinteractive.com>
85
86 This library is free software; you can redistribute it and/or modify
87 it under the same terms as Perl itself.
88
89 =cut