0c04e05d6fb46c437b52a39774076961f6d1b64c
[gitmo/Mouse.git] / lib / Mouse / Spec.pm
1 package Mouse::Spec;
2 use strict;
3 use warnings;
4
5 our $VERSION = '0.76';
6
7 our $MouseVersion = $VERSION;
8 our $MooseVersion = '1.10';
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.76
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 (and incompatible) with Moose.
35
36 =head2 Compatibility with Moose
37
38 =head3 Sugary APIs
39
40 The sugary APIs are highly compatible with Moose. Methods which have the
41 same name as Moose's are expected to be compatible with Moose's.
42
43 =head3 Meta object protocols
44
45 Meta object protocols are a subset of the counterpart of Moose.
46 Their methods which have the same name as Moose's are expected to be
47 compatible with Moose's. Feel free to use these methods even if they
48 are not documented.
49
50 However, there are differences between Moose's MOP and Mouse's,
51 For example, meta object protocols in Mouse have no attributes by default,
52 so C<< $metaclass->meta->make_immutable() >> will not work as you expect.
53 B<Don not make metaclasses immutable>.
54
55 =head3 Mouse::Meta::Instance
56
57 Meta instance mechanism is not implemented.
58
59 =head3 Role exclusion
60
61 Role exclusion, C<exclude()>, is not implemented.
62
63 =head3 -metaclass in Mouse::Exporter
64
65 C<< use Mouse -metaclass => ... >> are not implemented.
66 Use C<< use Mouse -traits => ... >> instead.
67
68 =head3 Mouse::Meta::Attribute::Native
69
70 Native traits are not supported directly, but C<MouseX::NativeTraits> is
71 available on CPAN. Once you have installed it, you can use it as the same way
72 in Moose. That is, native traits are automatically loaded by Mouse.
73
74 See L<MouseX::NativeTraits> for details.
75
76 =head2 Notes about Moose::Cookbook
77
78 Many recipes in L<Moose::Cookbook> fit L<Mouse>, including:
79
80 =over 4
81
82 =item *
83
84 L<Moose::Cookbook::Basics::Recipe1> - The (always classic) B<Point> example
85
86 =item *
87
88 L<Moose::Cookbook::Basics::Recipe2> - A simple B<BankAccount> example
89
90 =item *
91
92 L<Moose::Cookbook::Basics::Recipe3> - A lazy B<BinaryTree> example
93
94 =item *
95
96 L<Moose::Cookbook::Basics::Recipe4> - Subtypes, and modeling a simple B<Company> class hierarchy
97
98 =item *
99
100 L<Moose::Cookbook::Basics::Recipe5> - More subtypes, coercion in a B<Request> class
101
102 =item *
103
104 L<Moose::Cookbook::Basics::Recipe6> - The augment/inner example
105
106 =item *
107
108 L<Moose::Cookbook::Basics::Recipe7> - Making Moose fast with immutable
109
110 =item *
111
112 L<Moose::Cookbook::Basics::Recipe8> - Builder methods and lazy_build
113
114 =item *
115
116 L<Moose::Cookbook::Basics::Recipe9> - Operator overloading, subtypes, and coercion
117
118 =item *
119
120 L<Moose::Cookbook::Basics::Recipe10> - Using BUILDARGS and BUILD to hook into object construction
121
122 =item *
123
124 L<Moose::Cookbook::Roles::Recipe1> - The Moose::Role example
125
126 =item *
127
128 L<Moose::Cookbook::Roles::Recipe2> - Advanced Role Composition - method exclusion and aliasing
129
130 =item *
131
132 L<Moose::Cookbook::Roles::Recipe3> - Applying a role to an object instance
133
134 =item *
135
136 L<Moose::Cookbook::Meta::Recipe2> - A meta-attribute, attributes with labels
137
138 =item *
139
140 L<Moose::Cookbook::Meta::Recipe3> - Labels implemented via attribute traits
141
142 =item *
143
144 L<Moose::Cookbook::Extending::Recipe3> - Providing an alternate base object class
145
146 =back
147
148 =head1 SEE ALSO
149
150 L<Mouse>
151
152 L<Moose>
153
154 L<Moose::Manual>
155
156 L<Moose::Cookbook>
157
158 =cut
159