r48381 - in /trunk/libmoosex-role-parameterized-perl: ./ debian/ lib/MooseX/Role/ lib/MooseX/Role/Parameterized/Meta/Role/ t/ t/lib/
jawnsy-guest at users.alioth.debian.org
jawnsy-guest at users.alioth.debian.org
Mon Dec 7 03:09:30 UTC 2009
Author: jawnsy-guest
Date: Mon Dec 7 03:09:23 2009
New Revision: 48381
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=48381
Log:
New upstream release
Added:
trunk/libmoosex-role-parameterized-perl/t/018-parameter-roles.t
- copied unchanged from r48380, branches/upstream/libmoosex-role-parameterized-perl/current/t/018-parameter-roles.t
trunk/libmoosex-role-parameterized-perl/t/102-nested.t
- copied unchanged from r48380, branches/upstream/libmoosex-role-parameterized-perl/current/t/102-nested.t
trunk/libmoosex-role-parameterized-perl/t/200-curried-parameterized-role.t
- copied unchanged from r48380, branches/upstream/libmoosex-role-parameterized-perl/current/t/200-curried-parameterized-role.t
trunk/libmoosex-role-parameterized-perl/t/lib/
- copied from r48380, branches/upstream/libmoosex-role-parameterized-perl/current/t/lib/
Modified:
trunk/libmoosex-role-parameterized-perl/Changes
trunk/libmoosex-role-parameterized-perl/MANIFEST
trunk/libmoosex-role-parameterized-perl/META.yml
trunk/libmoosex-role-parameterized-perl/Makefile.PL
trunk/libmoosex-role-parameterized-perl/debian/changelog
trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized.pm
trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm
trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm
trunk/libmoosex-role-parameterized-perl/t/001-parameters.t
trunk/libmoosex-role-parameterized-perl/t/003-apply.t
Modified: trunk/libmoosex-role-parameterized-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/Changes?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/Changes (original)
+++ trunk/libmoosex-role-parameterized-perl/Changes Mon Dec 7 03:09:23 2009
@@ -1,4 +1,13 @@
Changes for MooseX-Role-Parameterized
+
+0.14
+ * Fix a nesting bug reported by nothingmuch with a test case provided
+ by rafl (Sartak)
+
+ * Parameterized roles now keep track of their genitor role (Sartak)
+
+ * Delegate parameterizable->has_parameter to parameters->has_attribute
+ (Sartak)
0.13 Sep 11, 2009
* Documentation improvements (Sartak)
Modified: trunk/libmoosex-role-parameterized-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/MANIFEST?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/MANIFEST (original)
+++ trunk/libmoosex-role-parameterized-perl/MANIFEST Mon Dec 7 03:09:23 2009
@@ -34,6 +34,10 @@
t/015-compose-keywords.t
t/016-trait.t
t/017-current_metaclass.t
+t/018-parameter-roles.t
t/100-erroneous-keywords.t
t/101-alias-excludes.t
+t/102-nested.t
t/150-composite-role-application.t
+t/200-curried-parameterized-role.t
+t/lib/Bar.pm
Modified: trunk/libmoosex-role-parameterized-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/META.yml?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/META.yml (original)
+++ trunk/libmoosex-role-parameterized-perl/META.yml Mon Dec 7 03:09:23 2009
@@ -6,6 +6,7 @@
ExtUtils::MakeMaker: 6.42
Test::Exception: 0.27
Test::Moose: 0
+ Test::More: 0.88
configure_requires:
ExtUtils::MakeMaker: 6.42
distribution_type: module
@@ -26,4 +27,4 @@
homepage: http://github.com/sartak/MooseX-Role-Parameterized/tree
license: http://dev.perl.org/licenses/
repository: git://github.com/sartak/MooseX-Role-Parameterized.git
-version: 0.13
+version: 0.14
Modified: trunk/libmoosex-role-parameterized-perl/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/Makefile.PL?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/Makefile.PL (original)
+++ trunk/libmoosex-role-parameterized-perl/Makefile.PL Mon Dec 7 03:09:23 2009
@@ -8,6 +8,7 @@
requires 'Moose' => '0.78';
test_requires 'Test::Moose';
+test_requires 'Test::More' => '0.88';
build_requires 'Test::Exception' => '0.27';
Modified: trunk/libmoosex-role-parameterized-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/debian/changelog?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/debian/changelog (original)
+++ trunk/libmoosex-role-parameterized-perl/debian/changelog Mon Dec 7 03:09:23 2009
@@ -1,3 +1,9 @@
+libmoosex-role-parameterized-perl (0.14-1) UNRELEASED; urgency=low
+
+ * New upstream release
+
+ -- Jonathan Yu <jawnsy at cpan.org> Sun, 06 Dec 2009 18:56:53 -0500
+
libmoosex-role-parameterized-perl (0.13-1) unstable; urgency=low
[ Ryan Niebur ]
Modified: trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized.pm?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized.pm (original)
+++ trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized.pm Mon Dec 7 03:09:23 2009
@@ -7,7 +7,7 @@
use MooseX::Role::Parameterized::Meta::Role::Parameterizable;
-our $VERSION = '0.13';
+our $VERSION = '0.14';
our $CURRENT_METACLASS;
Moose::Exporter->setup_import_methods(
@@ -23,7 +23,7 @@
my $caller = shift;
confess "'parameter' may not be used inside of the role block"
- if $CURRENT_METACLASS;
+ if $CURRENT_METACLASS && $CURRENT_METACLASS->genitor->name eq $caller;
my $meta = Class::MOP::class_of($caller);
Modified: trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm (original)
+++ trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm Mon Dec 7 03:09:23 2009
@@ -10,7 +10,12 @@
use constant parameterized_role_metaclass => 'MooseX::Role::Parameterized::Meta::Role::Parameterized';
use constant parameter_metaclass => 'MooseX::Role::Parameterized::Meta::Parameter';
-use constant parameters_class => 'MooseX::Role::Parameterized::Parameters';
+
+has parameters_class => (
+ is => 'ro',
+ isa => 'ClassName',
+ default => 'MooseX::Role::Parameterized::Parameters',
+);
has parameters_metaclass => (
is => 'rw',
@@ -23,6 +28,9 @@
superclasses => [$self->parameters_class],
attribute_metaclass => $self->parameter_metaclass,
);
+ },
+ handles => {
+ has_parameter => 'has_attribute',
},
);
@@ -71,7 +79,10 @@
confess "A role generator is required to generate roles"
unless $self->has_role_generator;
- my $role = $self->parameterized_role_metaclass->create_anon_role(parameters => $parameters);
+ my $role = $self->parameterized_role_metaclass->create_anon_role(
+ genitor => $self,
+ parameters => $parameters,
+ );
local $MooseX::Role::Parameterized::CURRENT_METACLASS = $role;
@@ -132,5 +143,53 @@
parameterized role
(L<MooseX::Role::Parameterized::Meta::Role::Parameterized>).
+=head1 ATTRIBUTES
+
+=head2 parameters_class
+
+The name of the class that will be used to construct the parameters object.
+
+=head2 parameters_metaclass
+
+A metaclass representing this roles's parameters. It will be an anonymous
+subclass of L</parameters_class>. Each call to
+L<MooseX::Role::Parameters/parameter> adds an attribute to this metaclass.
+
+When this role is consumed, the parameters object will be instantiated using
+this metaclass.
+
+=head2 role_generator
+
+A code reference that is used to generate a role based on the parameters
+provided by the consumer. The user usually specifies it using the
+L<MooseX::Role::Parameterized/role> keyword.
+
+=head1 METHODS
+
+=head2 add_parameter $name, %options
+
+Basically delegates to L<Moose::Meta::Class/add_attribute> on the
+L</parameters_metaclass> but with error messages that refer to a "parameter"
+not an "attribute".
+
+=head2 construct_parameters %arguments
+
+Creates a new L<MooseX::Role::Parameterized::Parameters> object using metaclass
+L</parameters_metaclass>.
+
+The arguments are those specified by the consumer as parameter values.
+
+=head2 generate_role %arguments
+
+Returns a new instance of
+L<MooseX::Role::Parameterized::Meta::Role::Parameterized> based on the
+arguments. The arguments are a hash reference of C<parameters> and, if
+available, a C<consumer> metaobject.
+
+=head2 apply
+
+Overrides L<Moose::Meta::Role/apply> to automatically generate the
+parameterized role.
+
=cut
Modified: trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm (original)
+++ trunk/libmoosex-role-parameterized-perl/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm Mon Dec 7 03:09:23 2009
@@ -5,6 +5,12 @@
our $VERSION = '0.10';
use MooseX::Role::Parameterized::Parameters;
+
+has genitor => (
+ is => 'ro',
+ isa => 'MooseX::Role::Parameterized::Meta::Role::Parameterizable',
+ required => 1,
+);
has parameters => (
is => 'rw',
@@ -28,5 +34,17 @@
with their parameters bound. All this actually provides is a place to store the
L<MooseX::Role::Parameterized::Parameters> object.
+=head1 ATTRIBUTES
+
+=head2 genitor
+
+Returns the L<MooseX::Role::Parameterized::Meta::Role::Parameterizable>
+metaobject that generated this role.
+
+=head2 parameters
+
+Returns the L<MooseX::Role::Parameterized::Parameters> object that represents
+the specific parameter values for this parameterized role.
+
=cut
Modified: trunk/libmoosex-role-parameterized-perl/t/001-parameters.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/t/001-parameters.t?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/t/001-parameters.t (original)
+++ trunk/libmoosex-role-parameterized-perl/t/001-parameters.t Mon Dec 7 03:09:23 2009
@@ -1,7 +1,7 @@
#!/usr/bin/env perl
use strict;
use warnings;
-use Test::More tests => 14;
+use Test::More tests => 16;
use Test::Exception;
use MooseX::Role::Parameterized::Parameters;
@@ -34,6 +34,9 @@
isa_ok($parameter, 'MooseX::Role::Parameterized::Meta::Parameter');
is($parameter->name, 'length', "parameter name");
ok($parameter->is_required, "parameter is required");
+
+ok(MyRole::LengthParameter->meta->has_parameter('length'), 'has_parameter');
+ok(!MyRole::LengthParameter->meta->has_parameter('kjhef'), 'has_parameter');
throws_ok {
MyRole::LengthParameter->meta->construct_parameters;
Modified: trunk/libmoosex-role-parameterized-perl/t/003-apply.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-role-parameterized-perl/t/003-apply.t?rev=48381&op=diff
==============================================================================
--- trunk/libmoosex-role-parameterized-perl/t/003-apply.t (original)
+++ trunk/libmoosex-role-parameterized-perl/t/003-apply.t Mon Dec 7 03:09:23 2009
@@ -1,7 +1,7 @@
#!/usr/bin/env perl
use strict;
use warnings;
-use Test::More tests => 20;
+use Test::More tests => 21;
use Test::Exception;
my %args;
@@ -67,6 +67,7 @@
cant_ok('MyClass::Dumper' => qw(freeze_Storable thaw_Storable));
is($args{consumer}, MyClass::Dumper->meta, 'Role block receives consumer');
+is(MyClass::Dumper->meta->roles->[0]->genitor, MyRole::Storage->meta, 'genitor');
do {
package MyClass::Storable;
More information about the Pkg-perl-cvs-commits
mailing list