2 use lib '/Users/stevan/CPAN/Class-MOP/Class-MOP/lib';
11 use Scalar::Util 'blessed';
13 use Sub::Name 'subname';
15 use Moose::Meta::Class;
16 use Moose::Meta::Attribute;
20 require Moose::Util::TypeConstraints;
26 Moose::Util::TypeConstraints->import($pkg);
29 if ($pkg->can('meta')) {
31 (blessed($meta) && $meta->isa('Class::MOP::Class'))
32 || confess "Whoops, not møøsey enough";
35 $meta = Moose::Meta::Class->initialize($pkg => (
36 ':attribute_metaclass' => 'Moose::Meta::Attribute'
41 # &alias_method will install the method, but it
42 # will not name it with
45 $meta->alias_method('extends' => subname 'Moose::extends' => sub { $meta->superclasses(@_) });
48 $meta->alias_method('has' => subname 'Moose::has' => sub { $meta->add_attribute(@_) });
50 # handle method modifers
51 $meta->alias_method('before' => subname 'Moose::before' => sub {
53 $meta->add_before_method_modifier($_, $code) for @_;
55 $meta->alias_method('after' => subname 'Moose::after' => sub {
57 $meta->add_after_method_modifier($_, $code) for @_;
59 $meta->alias_method('around' => subname 'Moose::around' => sub {
61 $meta->add_around_method_modifier($_, $code) for @_;
64 # make sure they inherit from Moose::Object
65 $meta->superclasses('Moose::Object')
66 unless $meta->superclasses();
68 # we recommend using these things
69 # so export them for them
70 $meta->alias_method('confess' => \&confess);
71 $meta->alias_method('blessed' => \&blessed);
90 Makes Other Object Systems Envious
92 Most Other Objects Suck Eggs
94 Makes Object Orientation So Easy
96 Metacircular Object Oriented Systems Environment
100 All complex software has bugs lurking in it, and this module is no
101 exception. If you find a bug please either email me, or add the bug
106 I use L<Devel::Cover> to test the code coverage of my tests, below is the
107 L<Devel::Cover> report on this module's test suite.
109 =head1 ACKNOWLEDGEMENTS
113 Stevan Little E<lt>stevan@iinteractive.comE<gt>
115 =head1 COPYRIGHT AND LICENSE
117 Copyright 2006 by Infinity Interactive, Inc.
119 L<http://www.iinteractive.com>
121 This library is free software; you can redistribute it and/or modify
122 it under the same terms as Perl itself.