9551e44c75181ac6d80722094a2f2159ed40d2e2
[gitmo/Mouse.git] / lib / Mouse / Spec.pm
1 package Mouse::Spec;
2 use strict;
3 use warnings;
4
5 our $VERSION = '0.47';
6
7 our $MouseVersion = $VERSION;
8 our $MooseVersion = '0.93';
9
10 sub MouseVersion{ $MouseVersion }
11 sub MooseVersion{ $MooseVersion }
12
13 1;
14 __END__
15
16 =head1 NAME
17
18 Mouse::Spec - To what extent Mouse is compatible with Moose
19
20 =head1 VERSION
21
22 This document describes Mouse version 0.47
23
24 =head1 SYNOPSIS
25
26     use Mouse::Spec;
27
28     printf "Mouse/%s is compatible with Moose/%s\n",
29         Mouse::Spec->MouseVersion, Mouse::Spec->MooseVersion;
30
31 =head1 DESCRIPTION
32
33 Mouse is a subset of Moose. This document describes to what extend Mouse is
34 compatible with Moose.
35
36 =head2 Compatibility with Moose
37
38 The sugary API is highly compatible with Moose.
39
40 =head2 Incompatibility with Moose
41
42 =head3 Meta object protocols
43
44 Any MOP in Mouse has no attributes.
45
46 For this reason, C<< $metaclass->meta->make_immutable() >> does not yet work as you expect.
47 B<Don not make metaclasses immutable>.
48
49 =head3 Mouse::Meta::Instance
50
51 Meta instance mechanism is not implemented.
52
53 =head3 Role exclusion
54
55 Role exclusion, C<exclude()>, is not implemented.
56
57 =head3 -metaclass in Mouse::Exporter
58
59 C<< use Mouse -metaclass => ... >> are not implemented.
60 Use C<< use Mouse -traits => ... >> instead.
61
62 =head2 Notes about Moose::Cookbook
63
64 Many recipes in L<Moose::Cookbook> fit L<Mouse>, including:
65
66 =over 4
67
68 =item *
69
70 L<Moose::Cookbook::Basics::Recipe1> - The (always classic) B<Point> example
71
72 =item *
73
74 L<Moose::Cookbook::Basics::Recipe2> - A simple B<BankAccount> example
75
76 =item *
77
78 L<Moose::Cookbook::Basics::Recipe3> - A lazy B<BinaryTree> example
79
80 =item *
81
82 L<Moose::Cookbook::Basics::Recipe4> - Subtypes, and modeling a simple B<Company> class hierarchy
83
84 =item *
85
86 L<Moose::Cookbook::Basics::Recipe5> - More subtypes, coercion in a B<Request> class
87
88 =item *
89
90 L<Moose::Cookbook::Basics::Recipe6> - The augment/inner example
91
92 =item *
93
94 L<Moose::Cookbook::Basics::Recipe7> - Making Moose fast with immutable
95
96 =item *
97
98 L<Moose::Cookbook::Basics::Recipe8> - Builder methods and lazy_build
99
100 =item *
101
102 L<Moose::Cookbook::Basics::Recipe9> - Operator overloading, subtypes, and coercion
103
104 =item *
105
106 L<Moose::Cookbook::Basics::Recipe10> - Using BUILDARGS and BUILD to hook into object construction
107
108 =item *
109
110 L<Moose::Cookbook::Roles::Recipe1> - The Moose::Role example
111
112 =item *
113
114 L<Moose::Cookbook::Roles::Recipe2> - Advanced Role Composition - method exclusion and aliasing
115
116 =item *
117
118 L<Moose::Cookbook::Roles::Recipe3> - Applying a role to an object instance
119
120 =item *
121
122 L<Moose::Cookbook::Meta::Recipe2> - A meta-attribute, attributes with labels
123
124 =item *
125
126 L<Moose::Cookbook::Meta::Recipe3> - Labels implemented via attribute traits
127
128 =item *
129
130 L<Moose::Cookbook::Extending::Recipe3> - Providing an alternate base object class
131
132 =back
133
134 =head1 SEE ALSO
135
136 L<Mouse>
137
138 L<Moose>
139
140 L<Moose::Manual>
141
142 L<Moose::Cookbook>
143
144 =cut
145