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