[svn-upgrade] Integrating new upstream version, libmoose-perl (1.03)
Ansgar Burchardt
14 years ago
0 | 0 | Also see Moose::Manual::Delta for more details of, and workarounds |
1 | 1 | for, noteworthy changes. |
2 | ||
3 | 1.03 Thu, May 06, 2010 | |
4 | ||
5 | [NEW FEATURES] | |
6 | ||
7 | * Allow specifying required versions when setting superclasses or applying | |
8 | roles (Florian Ragwitz). | |
2 | 9 | |
3 | 10 | 1.02 Sat, May 01, 2010 |
4 | 11 |
21 | 21 | - xt |
22 | 22 | requires: |
23 | 23 | Carp: 0 |
24 | Class::MOP: 0.98 | |
24 | Class::MOP: 1.01 | |
25 | 25 | Data::OptList: 0 |
26 | 26 | List::MoreUtils: 0.12 |
27 | 27 | Scalar::Util: 1.19 |
32 | 32 | perl: 5.8.1 |
33 | 33 | resources: |
34 | 34 | license: http://dev.perl.org/licenses/ |
35 | version: 1.02 | |
35 | version: 1.03 |
12 | 12 | license 'perl'; |
13 | 13 | |
14 | 14 | requires 'Carp'; |
15 | requires 'Class::MOP' => '0.98'; | |
15 | requires 'Class::MOP' => '1.01'; | |
16 | 16 | requires 'Data::OptList' => '0'; |
17 | 17 | requires 'List::MoreUtils' => '0.12'; |
18 | 18 | requires 'Scalar::Util' => '1.19'; |
0 | Moose version 1.02 | |
0 | Moose version 1.03 | |
1 | 1 | =========================== |
2 | 2 | |
3 | 3 | See the individual module documentation for more information |
2 | 2 | use strict; |
3 | 3 | use warnings; |
4 | 4 | |
5 | our $VERSION = '1.02'; | |
5 | our $VERSION = '1.03'; | |
6 | 6 | $VERSION = eval $VERSION; |
7 | 7 | our $AUTHORITY = 'cpan:STEVAN'; |
8 | 8 |
2 | 2 | use strict; |
3 | 3 | use warnings; |
4 | 4 | |
5 | our $VERSION = '1.02'; | |
5 | our $VERSION = '1.03'; | |
6 | 6 | $VERSION = eval $VERSION; |
7 | 7 | our $AUTHORITY = 'cpan:STEVAN'; |
8 | 8 |
2 | 2 | use strict; |
3 | 3 | use warnings; |
4 | 4 | |
5 | our $VERSION = '1.02'; | |
5 | our $VERSION = '1.03'; | |
6 | 6 | $VERSION = eval $VERSION; |
7 | 7 | our $AUTHORITY = 'cpan:STEVAN'; |
8 | 8 |
2 | 2 | use strict; |
3 | 3 | use warnings; |
4 | 4 | |
5 | our $VERSION = '1.02'; | |
5 | our $VERSION = '1.03'; | |
6 | 6 | our $XS_VERSION = $VERSION; |
7 | 7 | $VERSION = eval $VERSION; |
8 | 8 | our $AUTHORITY = 'cpan:STEVAN'; |
3 | 3 | use List::Util; |
4 | 4 | use List::MoreUtils; |
5 | 5 | |
6 | our $VERSION = '1.02'; | |
6 | our $VERSION = '1.03'; | |
7 | 7 | $VERSION = eval $VERSION; |
8 | 8 | our $AUTHORITY = 'cpan:STEVAN'; |
9 | 9 |
1 | 1 | package Moose::Meta::Attribute::Native::MethodProvider::Bool; |
2 | 2 | use Moose::Role; |
3 | 3 | |
4 | our $VERSION = '1.02'; | |
4 | our $VERSION = '1.03'; | |
5 | 5 | $VERSION = eval $VERSION; |
6 | 6 | our $AUTHORITY = 'cpan:STEVAN'; |
7 | 7 |
0 | 0 | package Moose::Meta::Attribute::Native::MethodProvider::Code; |
1 | 1 | use Moose::Role; |
2 | 2 | |
3 | our $VERSION = '1.02'; | |
3 | our $VERSION = '1.03'; | |
4 | 4 | $VERSION = eval $VERSION; |
5 | 5 | our $AUTHORITY = 'cpan:STEVAN'; |
6 | 6 |
1 | 1 | package Moose::Meta::Attribute::Native::MethodProvider::Counter; |
2 | 2 | use Moose::Role; |
3 | 3 | |
4 | our $VERSION = '1.02'; | |
4 | our $VERSION = '1.03'; | |
5 | 5 | $VERSION = eval $VERSION; |
6 | 6 | our $AUTHORITY = 'cpan:STEVAN'; |
7 | 7 |
0 | 0 | package Moose::Meta::Attribute::Native::MethodProvider::Hash; |
1 | 1 | use Moose::Role; |
2 | 2 | |
3 | our $VERSION = '1.02'; | |
3 | our $VERSION = '1.03'; | |
4 | 4 | $VERSION = eval $VERSION; |
5 | 5 | our $AUTHORITY = 'cpan:STEVAN'; |
6 | 6 |
0 | 0 | package Moose::Meta::Attribute::Native::MethodProvider::String; |
1 | 1 | use Moose::Role; |
2 | 2 | |
3 | our $VERSION = '1.02'; | |
3 | our $VERSION = '1.03'; | |
4 | 4 | $VERSION = eval $VERSION; |
5 | 5 | our $AUTHORITY = 'cpan:STEVAN'; |
6 | 6 |
1 | 1 | package Moose::Meta::Attribute::Native::Trait::Array; |
2 | 2 | use Moose::Role; |
3 | 3 | |
4 | our $VERSION = '1.02'; | |
4 | our $VERSION = '1.03'; | |
5 | 5 | $VERSION = eval $VERSION; |
6 | 6 | our $AUTHORITY = 'cpan:STEVAN'; |
7 | 7 |
1 | 1 | use Moose::Role; |
2 | 2 | use Moose::Meta::Attribute::Native::MethodProvider::Bool; |
3 | 3 | |
4 | our $VERSION = '1.02'; | |
4 | our $VERSION = '1.03'; | |
5 | 5 | $VERSION = eval $VERSION; |
6 | 6 | our $AUTHORITY = 'cpan:STEVAN'; |
7 | 7 |
1 | 1 | use Moose::Role; |
2 | 2 | use Moose::Meta::Attribute::Native::MethodProvider::Code; |
3 | 3 | |
4 | our $VERSION = '1.02'; | |
4 | our $VERSION = '1.03'; | |
5 | 5 | $VERSION = eval $VERSION; |
6 | 6 | our $AUTHORITY = 'cpan:STEVAN'; |
7 | 7 |
1 | 1 | package Moose::Meta::Attribute::Native::Trait::Counter; |
2 | 2 | use Moose::Role; |
3 | 3 | |
4 | our $VERSION = '1.02'; | |
4 | our $VERSION = '1.03'; | |
5 | 5 | $VERSION = eval $VERSION; |
6 | 6 | our $AUTHORITY = 'cpan:STEVAN'; |
7 | 7 |
1 | 1 | package Moose::Meta::Attribute::Native::Trait::Hash; |
2 | 2 | use Moose::Role; |
3 | 3 | |
4 | our $VERSION = '1.02'; | |
4 | our $VERSION = '1.03'; | |
5 | 5 | $VERSION = eval $VERSION; |
6 | 6 | our $AUTHORITY = 'cpan:STEVAN'; |
7 | 7 |
0 | 0 | package Moose::Meta::Attribute::Native::Trait::Number; |
1 | 1 | use Moose::Role; |
2 | 2 | |
3 | our $VERSION = '1.02'; | |
3 | our $VERSION = '1.03'; | |
4 | 4 | $VERSION = eval $VERSION; |
5 | 5 | our $AUTHORITY = 'cpan:STEVAN'; |
6 | 6 |
0 | 0 | package Moose::Meta::Attribute::Native::Trait::String; |
1 | 1 | use Moose::Role; |
2 | 2 | |
3 | our $VERSION = '1.02'; | |
3 | our $VERSION = '1.03'; | |
4 | 4 | $VERSION = eval $VERSION; |
5 | 5 | our $AUTHORITY = 'cpan:STEVAN'; |
6 | 6 |
2 | 2 | use Moose::Role; |
3 | 3 | use Moose::Util::TypeConstraints; |
4 | 4 | |
5 | our $VERSION = '1.02'; | |
5 | our $VERSION = '1.03'; | |
6 | 6 | $VERSION = eval $VERSION; |
7 | 7 | our $AUTHORITY = 'cpan:STEVAN'; |
8 | 8 |
0 | 0 | package Moose::Meta::Attribute::Native; |
1 | 1 | |
2 | our $VERSION = '1.02'; | |
2 | our $VERSION = '1.03'; | |
3 | 3 | $VERSION = eval $VERSION; |
4 | 4 | our $AUTHORITY = 'cpan:STEVAN'; |
5 | 5 |
8 | 8 | use Try::Tiny; |
9 | 9 | use overload (); |
10 | 10 | |
11 | our $VERSION = '1.02'; | |
11 | our $VERSION = '1.03'; | |
12 | 12 | our $AUTHORITY = 'cpan:STEVAN'; |
13 | 13 | |
14 | 14 | use Moose::Meta::Method::Accessor; |
4 | 4 | |
5 | 5 | use Class::MOP; |
6 | 6 | |
7 | our $VERSION = '1.02'; | |
7 | our $VERSION = '1.03'; | |
8 | 8 | $VERSION = eval $VERSION; |
9 | 9 | our $AUTHORITY = 'cpan:STEVAN'; |
10 | 10 |
6 | 6 | use Class::MOP; |
7 | 7 | |
8 | 8 | use Carp (); |
9 | use Data::OptList; | |
9 | 10 | use List::Util qw( first ); |
10 | 11 | use List::MoreUtils qw( any all uniq first_index ); |
11 | 12 | use Scalar::Util 'weaken', 'blessed'; |
12 | 13 | |
13 | our $VERSION = '1.02'; | |
14 | our $VERSION = '1.03'; | |
14 | 15 | $VERSION = eval $VERSION; |
15 | 16 | our $AUTHORITY = 'cpan:STEVAN'; |
16 | 17 | |
278 | 279 | |
279 | 280 | sub superclasses { |
280 | 281 | my $self = shift; |
281 | my @supers = @_; | |
282 | foreach my $super (@supers) { | |
283 | Class::MOP::load_class($super); | |
284 | my $meta = Class::MOP::class_of($super); | |
285 | $self->throw_error("You cannot inherit from a Moose Role ($super)") | |
282 | my $supers = Data::OptList::mkopt(\@_); | |
283 | foreach my $super (@{ $supers }) { | |
284 | my ($name, $opts) = @{ $super }; | |
285 | Class::MOP::load_class($name, $opts); | |
286 | my $meta = Class::MOP::class_of($name); | |
287 | $self->throw_error("You cannot inherit from a Moose Role ($name)") | |
286 | 288 | if $meta && $meta->isa('Moose::Meta::Role') |
287 | 289 | } |
288 | return $self->SUPER::superclasses(@supers); | |
290 | return $self->SUPER::superclasses(map { $_->[0] } @{ $supers }); | |
289 | 291 | } |
290 | 292 | |
291 | 293 | ### --------------------------------------------- |
722 | 724 | cache => 1, |
723 | 725 | ); |
724 | 726 | |
727 | Each entry in both the C<superclasses> and the C<roles> option can be | |
728 | followed by a hash reference with arguments. The C<supperclasses> | |
729 | option can be supplied with a L<-version|Class::MOP/Class Loading | |
730 | Options> option that ensures the loaded superclass satisfies the | |
731 | required version. The C<role> option also takes the C<-version> as an | |
732 | argument, but the option hash reference can also contain any other | |
733 | role relevant values like exclusions or parameterized role arguments. | |
734 | ||
725 | 735 | =item B<< $metaclass->make_immutable(%options) >> |
726 | 736 | |
727 | 737 | This overrides the parent's method to add a few options. Specifically, |
735 | 745 | |
736 | 746 | This overrides the parent's method in order to add support for |
737 | 747 | attribute triggers. |
748 | ||
749 | =item B<< $metaclass->superclasses(@superclasses) >> | |
750 | ||
751 | This is the accessor allowing you to read or change the parents of | |
752 | the class. | |
753 | ||
754 | Each superclass can be followed by a hash reference containing a | |
755 | L<-version|Class::MOP/Class Loading Options> value. If the version | |
756 | requirement is not satisfied an error will be thrown. | |
738 | 757 | |
739 | 758 | =item B<< $metaclass->add_override_method_modifier($name, $sub) >> |
740 | 759 |
3 | 3 | use strict; |
4 | 4 | use warnings; |
5 | 5 | |
6 | our $VERSION = '1.02'; | |
6 | our $VERSION = '1.03'; | |
7 | 7 | $VERSION = eval $VERSION; |
8 | 8 | our $AUTHORITY = 'cpan:STEVAN'; |
9 | 9 |
3 | 3 | use strict; |
4 | 4 | use warnings; |
5 | 5 | |
6 | our $VERSION = '1.02'; | |
6 | our $VERSION = '1.03'; | |
7 | 7 | $VERSION = eval $VERSION; |
8 | 8 | our $AUTHORITY = 'cpan:STEVAN'; |
9 | 9 |
2 | 2 | use strict; |
3 | 3 | use warnings; |
4 | 4 | |
5 | our $VERSION = '1.02'; | |
5 | our $VERSION = '1.03'; | |
6 | 6 | $VERSION = eval $VERSION; |
7 | 7 | our $AUTHORITY = 'cpan:STEVAN'; |
8 | 8 |
5 | 5 | |
6 | 6 | use Scalar::Util 'blessed', 'weaken', 'looks_like_number', 'refaddr'; |
7 | 7 | |
8 | our $VERSION = '1.02'; | |
8 | our $VERSION = '1.03'; | |
9 | 9 | our $AUTHORITY = 'cpan:STEVAN'; |
10 | 10 | |
11 | 11 | use base 'Moose::Meta::Method', |
6 | 6 | use Carp 'confess'; |
7 | 7 | use Scalar::Util 'blessed', 'weaken'; |
8 | 8 | |
9 | our $VERSION = '1.02'; | |
9 | our $VERSION = '1.03'; | |
10 | 10 | $VERSION = eval $VERSION; |
11 | 11 | our $AUTHORITY = 'cpan:STEVAN'; |
12 | 12 |
7 | 7 | use Scalar::Util 'blessed', 'weaken'; |
8 | 8 | use Try::Tiny (); |
9 | 9 | |
10 | our $VERSION = '1.02'; | |
10 | our $VERSION = '1.03'; | |
11 | 11 | $VERSION = eval $VERSION; |
12 | 12 | our $AUTHORITY = 'cpan:STEVAN'; |
13 | 13 |
2 | 2 | use strict; |
3 | 3 | use warnings; |
4 | 4 | |
5 | our $VERSION = '1.02'; | |
5 | our $VERSION = '1.03'; | |
6 | 6 | $VERSION = eval $VERSION; |
7 | 7 | our $AUTHORITY = 'cpan:STEVAN'; |
8 | 8 |
2 | 2 | use strict; |
3 | 3 | use warnings; |
4 | 4 | |
5 | our $VERSION = '1.02'; | |
5 | our $VERSION = '1.03'; | |
6 | 6 | $VERSION = eval $VERSION; |
7 | 7 | our $AUTHORITY = 'cpan:STEVAN'; |
8 | 8 |
2 | 2 | use strict; |
3 | 3 | use warnings; |
4 | 4 | |
5 | our $VERSION = '1.02'; | |
5 | our $VERSION = '1.03'; | |
6 | 6 | our $AUTHORITY = 'cpan:STEVAN'; |
7 | 7 | |
8 | 8 | use base 'Class::MOP::Mixin::AttributeCore'; |
7 | 7 | |
8 | 8 | use Moose::Meta::Role::Composite; |
9 | 9 | |
10 | our $VERSION = '1.02'; | |
10 | our $VERSION = '1.03'; | |
11 | 11 | $VERSION = eval $VERSION; |
12 | 12 | our $AUTHORITY = 'cpan:STEVAN'; |
13 | 13 |
6 | 6 | use Moose::Util 'english_list'; |
7 | 7 | use Scalar::Util 'weaken', 'blessed'; |
8 | 8 | |
9 | our $VERSION = '1.02'; | |
9 | our $VERSION = '1.03'; | |
10 | 10 | $VERSION = eval $VERSION; |
11 | 11 | our $AUTHORITY = 'cpan:STEVAN'; |
12 | 12 |
5 | 5 | |
6 | 6 | use Scalar::Util 'blessed'; |
7 | 7 | |
8 | our $VERSION = '1.02'; | |
8 | our $VERSION = '1.03'; | |
9 | 9 | $VERSION = eval $VERSION; |
10 | 10 | our $AUTHORITY = 'cpan:STEVAN'; |
11 | 11 |
5 | 5 | |
6 | 6 | use Scalar::Util 'blessed'; |
7 | 7 | |
8 | our $VERSION = '1.02'; | |
8 | our $VERSION = '1.03'; | |
9 | 9 | $VERSION = eval $VERSION; |
10 | 10 | our $AUTHORITY = 'cpan:STEVAN'; |
11 | 11 |
3 | 3 | use warnings; |
4 | 4 | use metaclass; |
5 | 5 | |
6 | our $VERSION = '1.02'; | |
6 | our $VERSION = '1.03'; | |
7 | 7 | $VERSION = eval $VERSION; |
8 | 8 | our $AUTHORITY = 'cpan:STEVAN'; |
9 | 9 |
6 | 6 | use List::MoreUtils 'all'; |
7 | 7 | use Scalar::Util 'blessed', 'weaken'; |
8 | 8 | |
9 | our $VERSION = '1.02'; | |
9 | our $VERSION = '1.03'; | |
10 | 10 | our $AUTHORITY = 'cpan:STEVAN'; |
11 | 11 | |
12 | 12 | use base 'Moose::Meta::Mixin::AttributeCore'; |
5 | 5 | |
6 | 6 | use Scalar::Util 'blessed'; |
7 | 7 | |
8 | our $VERSION = '1.02'; | |
8 | our $VERSION = '1.03'; | |
9 | 9 | $VERSION = eval $VERSION; |
10 | 10 | our $AUTHORITY = 'cpan:STEVAN'; |
11 | 11 |
7 | 7 | |
8 | 8 | use base qw(Moose::Meta::Role::Method::Required); |
9 | 9 | |
10 | our $VERSION = '1.02'; | |
10 | our $VERSION = '1.03'; | |
11 | 11 | $VERSION = eval $VERSION; |
12 | 12 | our $AUTHORITY = 'cpan:STEVAN'; |
13 | 13 |
9 | 9 | |
10 | 10 | use base qw(Class::MOP::Object); |
11 | 11 | |
12 | our $VERSION = '1.02'; | |
12 | our $VERSION = '1.03'; | |
13 | 13 | $VERSION = eval $VERSION; |
14 | 14 | our $AUTHORITY = 'cpan:STEVAN'; |
15 | 15 |
3 | 3 | use strict; |
4 | 4 | use warnings; |
5 | 5 | |
6 | our $VERSION = '1.02'; | |
6 | our $VERSION = '1.03'; | |
7 | 7 | $VERSION = eval $VERSION; |
8 | 8 | our $AUTHORITY = 'cpan:STEVAN'; |
9 | 9 |
8 | 8 | use Carp 'confess'; |
9 | 9 | use Devel::GlobalDestruction 'in_global_destruction'; |
10 | 10 | |
11 | our $VERSION = '1.02'; | |
11 | our $VERSION = '1.03'; | |
12 | 12 | $VERSION = eval $VERSION; |
13 | 13 | our $AUTHORITY = 'cpan:STEVAN'; |
14 | 14 |
6 | 6 | |
7 | 7 | use Scalar::Util 'blessed'; |
8 | 8 | |
9 | our $VERSION = '1.02'; | |
9 | our $VERSION = '1.03'; | |
10 | 10 | $VERSION = eval $VERSION; |
11 | 11 | our $AUTHORITY = 'cpan:STEVAN'; |
12 | 12 |
7 | 7 | use Moose::Meta::Attribute; |
8 | 8 | use Moose::Util::TypeConstraints (); |
9 | 9 | |
10 | our $VERSION = '1.02'; | |
10 | our $VERSION = '1.03'; | |
11 | 11 | $VERSION = eval $VERSION; |
12 | 12 | our $AUTHORITY = 'cpan:STEVAN'; |
13 | 13 |
6 | 6 | use Scalar::Util 'blessed'; |
7 | 7 | use Moose::Util::TypeConstraints (); |
8 | 8 | |
9 | our $VERSION = '1.02'; | |
9 | our $VERSION = '1.03'; | |
10 | 10 | $VERSION = eval $VERSION; |
11 | 11 | our $AUTHORITY = 'cpan:STEVAN'; |
12 | 12 |
9 | 9 | |
10 | 10 | use Moose::Util::TypeConstraints (); |
11 | 11 | |
12 | our $VERSION = '1.02'; | |
12 | our $VERSION = '1.03'; | |
13 | 13 | $VERSION = eval $VERSION; |
14 | 14 | our $AUTHORITY = 'cpan:STEVAN'; |
15 | 15 |
5 | 5 | |
6 | 6 | use Moose::Util::TypeConstraints (); |
7 | 7 | |
8 | our $VERSION = '1.02'; | |
8 | our $VERSION = '1.03'; | |
9 | 9 | $VERSION = eval $VERSION; |
10 | 10 | our $AUTHORITY = 'cpan:STEVAN'; |
11 | 11 |
3 | 3 | use warnings; |
4 | 4 | use metaclass; |
5 | 5 | |
6 | our $VERSION = '1.02'; | |
6 | our $VERSION = '1.03'; | |
7 | 7 | $VERSION = eval $VERSION; |
8 | 8 | our $AUTHORITY = 'cpan:STEVAN'; |
9 | 9 |
7 | 7 | use Moose::Util::TypeConstraints; |
8 | 8 | use Moose::Meta::TypeConstraint::Parameterizable; |
9 | 9 | |
10 | our $VERSION = '1.02'; | |
10 | our $VERSION = '1.03'; | |
11 | 11 | $VERSION = eval $VERSION; |
12 | 12 | our $AUTHORITY = 'cpan:STEVAN'; |
13 | 13 |
6 | 6 | |
7 | 7 | use Scalar::Util 'blessed'; |
8 | 8 | |
9 | our $VERSION = '1.02'; | |
9 | our $VERSION = '1.03'; | |
10 | 10 | $VERSION = eval $VERSION; |
11 | 11 | our $AUTHORITY = 'cpan:STEVAN'; |
12 | 12 |
6 | 6 | use Scalar::Util 'blessed'; |
7 | 7 | use Moose::Util::TypeConstraints (); |
8 | 8 | |
9 | our $VERSION = '1.02'; | |
9 | our $VERSION = '1.03'; | |
10 | 10 | $VERSION = eval $VERSION; |
11 | 11 | our $AUTHORITY = 'cpan:STEVAN'; |
12 | 12 |
8 | 8 | |
9 | 9 | use List::Util qw(first); |
10 | 10 | |
11 | our $VERSION = '1.02'; | |
11 | our $VERSION = '1.03'; | |
12 | 12 | $VERSION = eval $VERSION; |
13 | 13 | our $AUTHORITY = 'cpan:STEVAN'; |
14 | 14 |
12 | 12 | |
13 | 13 | use base qw(Class::MOP::Object); |
14 | 14 | |
15 | our $VERSION = '1.02'; | |
15 | our $VERSION = '1.03'; | |
16 | 16 | $VERSION = eval $VERSION; |
17 | 17 | our $AUTHORITY = 'cpan:STEVAN'; |
18 | 18 |
11 | 11 | use if ( not our $__mx_is_compiled ), 'Moose::Meta::Class'; |
12 | 12 | use if ( not our $__mx_is_compiled ), metaclass => 'Moose::Meta::Class'; |
13 | 13 | |
14 | our $VERSION = '1.02'; | |
14 | our $VERSION = '1.03'; | |
15 | 15 | $VERSION = eval $VERSION; |
16 | 16 | our $AUTHORITY = 'cpan:STEVAN'; |
17 | 17 |
6 | 6 | |
7 | 7 | use Sub::Exporter; |
8 | 8 | |
9 | our $VERSION = '1.02'; | |
9 | our $VERSION = '1.03'; | |
10 | 10 | $VERSION = eval $VERSION; |
11 | 11 | our $AUTHORITY = 'cpan:STEVAN'; |
12 | 12 |
3 | 3 | use warnings; |
4 | 4 | use Scalar::Util 'blessed'; |
5 | 5 | |
6 | our $VERSION = '1.02'; | |
6 | our $VERSION = '1.03'; | |
7 | 7 | $VERSION = eval $VERSION; |
8 | 8 | our $AUTHORITY = 'cpan:STEVAN'; |
9 | 9 |
5 | 5 | use Class::MOP; |
6 | 6 | use Scalar::Util 'blessed', 'looks_like_number'; |
7 | 7 | |
8 | our $VERSION = '1.02'; | |
8 | our $VERSION = '1.03'; | |
9 | 9 | $VERSION = eval $VERSION; |
10 | 10 | our $AUTHORITY = 'cpan:STEVAN'; |
11 | 11 |
5 | 5 | use Scalar::Util qw( blessed reftype ); |
6 | 6 | use Moose::Exporter; |
7 | 7 | |
8 | our $VERSION = '1.02'; | |
8 | our $VERSION = '1.03'; | |
9 | 9 | $VERSION = eval $VERSION; |
10 | 10 | our $AUTHORITY = 'cpan:STEVAN'; |
11 | 11 |
7 | 7 | use Scalar::Util 'blessed'; |
8 | 8 | use Class::MOP 0.60; |
9 | 9 | |
10 | our $VERSION = '1.02'; | |
10 | our $VERSION = '1.03'; | |
11 | 11 | $VERSION = eval $VERSION; |
12 | 12 | our $AUTHORITY = 'cpan:STEVAN'; |
13 | 13 | |
104 | 104 | $meta = $role->[0]; |
105 | 105 | } |
106 | 106 | else { |
107 | Class::MOP::load_class( $role->[0] ); | |
107 | Class::MOP::load_class( $role->[0] , $role->[1] ); | |
108 | 108 | $meta = Class::MOP::class_of( $role->[0] ); |
109 | 109 | } |
110 | 110 |
3 | 3 | |
4 | 4 | use 5.008; |
5 | 5 | |
6 | our $VERSION = '1.02'; | |
6 | our $VERSION = '1.03'; | |
7 | 7 | $VERSION = eval $VERSION; |
8 | 8 | our $AUTHORITY = 'cpan:STEVAN'; |
9 | 9 | |
402 | 402 | replace it. This is important to ensure that classes which do not have |
403 | 403 | superclasses still properly inherit from L<Moose::Object>. |
404 | 404 | |
405 | Each superclass can be followed by a hash reference with options. Currently, | |
406 | only L<-version|Class::MOP/Class Loading Options> is recognized: | |
407 | ||
408 | extends 'My::Parent' => { -version => 0.01 }, | |
409 | 'My::OtherParent' => { -version => 0.03 }; | |
410 | ||
411 | An exception will be thrown if the version requirements are not | |
412 | satisfied. | |
413 | ||
405 | 414 | =item B<with (@roles)> |
406 | 415 | |
407 | 416 | This will apply a given set of C<@roles> to the local class. |
417 | ||
418 | Like with C<extends>, each specified role can be followed by a hash | |
419 | reference with a L<-version|Class::MOP/Class Loading Options> option: | |
420 | ||
421 | with 'My::Role' => { -version => 0.32 }, | |
422 | 'My::Otherrole' => { -version => 0.23 }; | |
423 | ||
424 | The specified version requirements must be satisfied, otherwise an | |
425 | exception will be thrown. | |
426 | ||
427 | If your role takes options or arguments, they can be passed along in the | |
428 | hash reference as well. | |
408 | 429 | |
409 | 430 | =item B<has $name|@$names =E<gt> %options> |
410 | 431 |
8 | 8 | use List::MoreUtils 'all'; |
9 | 9 | use Moose::Util 'does_role', 'find_meta'; |
10 | 10 | |
11 | our $VERSION = '1.02'; | |
11 | our $VERSION = '1.03'; | |
12 | 12 | $VERSION = eval $VERSION; |
13 | 13 | our $AUTHORITY = 'cpan:STEVAN'; |
14 | 14 |
4 | 4 | |
5 | 5 | use Class::MOP; |
6 | 6 | |
7 | our $VERSION = '1.02'; | |
7 | our $VERSION = '1.03'; | |
8 | 8 | $VERSION = eval $VERSION; |
9 | 9 | our $AUTHORITY = 'cpan:STEVAN'; |
10 | 10 |
43 | 43 | 'correct error when superclass could not be found'; |
44 | 44 | } |
45 | 45 | |
46 | { | |
47 | package Affe; | |
48 | our $VERSION = 23; | |
49 | } | |
50 | ||
51 | { | |
52 | package Tiger; | |
53 | use Moose; | |
54 | ||
55 | ::lives_ok { extends 'Foo', Affe => { -version => 13 } } | |
56 | 'extends with version requirement'; | |
57 | } | |
58 | ||
59 | { | |
60 | package Birne; | |
61 | use Moose; | |
62 | ||
63 | ::throws_ok { extends 'Foo', Affe => { -version => 42 } } | |
64 | qr/Affe version 42 required--this is only version 23/, | |
65 | 'extends with unsatisfied version requirement'; | |
66 | } | |
67 | ||
46 | 68 | done_testing; |
8 | 8 | { |
9 | 9 | package FooRole; |
10 | 10 | use Moose::Role; |
11 | ||
12 | our $VERSION = 23; | |
11 | 13 | |
12 | 14 | has 'bar' => ( is => 'rw', isa => 'FooClass' ); |
13 | 15 | has 'baz' => ( is => 'ro' ); |
42 | 44 | use Moose; |
43 | 45 | |
44 | 46 | extends 'BarClass'; |
45 | with 'FooRole'; | |
47 | ||
48 | ::throws_ok { with 'FooRole' => { -version => 42 } } | |
49 | qr/FooRole version 42 required--this is only version 23/, | |
50 | 'applying role with unsatisfied version requirement'; | |
51 | ||
52 | ::lives_ok { with 'FooRole' => { -version => 13 } } | |
53 | 'applying role with satisfied version requirement'; | |
46 | 54 | |
47 | 55 | sub blau {'FooClass::blau'} # << the role wraps this ... |
48 | 56 |