Moose FAQ: Expand "Can I turn off type constraint checking?"
[gitmo/Moose.git] / lib / Moose / Manual / MOP.pod
index 7e29a84..4398c53 100644 (file)
@@ -1,14 +1,16 @@
-=pod
+package Moose::Manual::MOP;
+
+# ABSTRACT: The Moose (and Class::MOP) meta API
 
-=head1 NAME
+__END__
 
-Moose::Manual::MOP - The Moose (and Class::MOP) Meta API
+=pod
 
 =head1 INTRODUCTION
 
 Moose provides a powerful introspection API built on top of
 C<Class::MOP>. "MOP" stands for Meta-Object Protocol. In plainer
-english, a MOP is an API for performing introspection on classes,
+English, a MOP is an API for performing introspection on classes,
 attributes, methods, and so on.
 
 In fact, it is C<Class::MOP> that provides many of Moose's core
@@ -24,9 +26,9 @@ method that you're looking for is defined in a C<Class::MOP> class,
 rather than Moose itself.
 
 The MOP provides more than just I<read-only> introspection. It also
-lets you add attributes, method, apply roles, and much more. In fact,
-all of the declarative Moose sugar is simply a thin layer on top of
-the MOP API.
+lets you add attributes and methods, apply roles, and much more. In
+fact, all of the declarative Moose sugar is simply a thin layer on top
+of the MOP API.
 
 If you want to write Moose extensions, you'll need to learn some of
 the MOP API. The introspection methods are also handy if you want to
@@ -80,7 +82,7 @@ and its parents.
 You can also get a list of methods:
 
   for my $method ( $meta->get_all_methods ) {
-      print $meth->fully_qualified_name, "\n";
+      print $method->fully_qualified_name, "\n";
   }
 
 Now we're looping over a list of L<Moose::Meta::Method> objects. Note
@@ -112,11 +114,7 @@ As an example, we can add a method to a class:
 
 Or an attribute:
 
-  $meta->add_attribute(
-      name => 'size',
-      is   => 'rw',
-      isa  => 'Int',
-  );
+  $meta->add_attribute( 'size' => ( is => 'rw', isa  => 'Int' ) );
 
 Obviously, this is much more cumbersome than using Perl syntax or
 Moose sugar for defining methods and attributes, but this API allows
@@ -128,41 +126,27 @@ class is immutable, calling any of these update methods will throw an
 exception.
 
 You can make a class mutable again simply by calling C<<
-$metaclass->make_mutable >>. Once you're done changing it, you can
-restore immutability by calling C<< $metaclass->make_immutable >>.
+$meta->make_mutable >>. Once you're done changing it, you can
+restore immutability by calling C<< $meta->make_immutable >>.
 
-However, the most common use for this part of of the meta API is as
+However, the most common use for this part of the meta API is as
 part of Moose extensions. These extensions should assume that they are
 being run before you make a class immutable.
 
 =head1 GOING FURTHER
 
-If you're interested in extending moose, we recommend reading all of
+If you're interested in extending Moose, we recommend reading all of
 the "Meta" and "Extending" recipes in the L<Moose::Cookbook>. Those
 recipes show various practical applications of the MOP.
 
 If you'd like to write your own extensions, one of the best ways to
 learn more about this is to look at other similar extensions to see
 how they work. You'll probably also need to read various API docs,
-including the docs for the various Moose::Meta::* classes and the
-C<Class::MOP> distribution.
+including the docs for the various C<Moose::Meta::*> and
+C<Class::MOP::*> classes.
 
 Finally, we welcome questions on the Moose mailing list and
 IRC. Information on the mailing list, IRC, and more references can be
 found in the L<Moose.pm docs|Moose/GETTING HELP>.
 
-=head1 AUTHOR
-
-Dave Rolsky E<lt>autarch@urth.orgE<gt> and Stevan Little
-E<lt>stevan@iinteractive.comE<gt>
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 2009 by Infinity Interactive, Inc.
-
-L<http://www.iinteractive.com>
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
 =cut