r48379 - in /branches/upstream/libmoosex-role-parameterized-perl/current: ./ 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:08:08 UTC 2009


Author: jawnsy-guest
Date: Mon Dec  7 03:07:52 2009
New Revision: 48379

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=48379
Log:
[svn-upgrade] Integrating new upstream version, libmoosex-role-parameterized-perl (0.14)

Added:
    branches/upstream/libmoosex-role-parameterized-perl/current/t/018-parameter-roles.t
    branches/upstream/libmoosex-role-parameterized-perl/current/t/102-nested.t
    branches/upstream/libmoosex-role-parameterized-perl/current/t/200-curried-parameterized-role.t
    branches/upstream/libmoosex-role-parameterized-perl/current/t/lib/
    branches/upstream/libmoosex-role-parameterized-perl/current/t/lib/Bar.pm
Modified:
    branches/upstream/libmoosex-role-parameterized-perl/current/Changes
    branches/upstream/libmoosex-role-parameterized-perl/current/MANIFEST
    branches/upstream/libmoosex-role-parameterized-perl/current/META.yml
    branches/upstream/libmoosex-role-parameterized-perl/current/Makefile.PL
    branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized.pm
    branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm
    branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm
    branches/upstream/libmoosex-role-parameterized-perl/current/t/001-parameters.t
    branches/upstream/libmoosex-role-parameterized-perl/current/t/003-apply.t

Modified: branches/upstream/libmoosex-role-parameterized-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/Changes?rev=48379&op=diff
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/Changes (original)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/Changes Mon Dec  7 03:07:52 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: branches/upstream/libmoosex-role-parameterized-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/MANIFEST?rev=48379&op=diff
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/MANIFEST (original)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/MANIFEST Mon Dec  7 03:07:52 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: branches/upstream/libmoosex-role-parameterized-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/META.yml?rev=48379&op=diff
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/META.yml (original)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/META.yml Mon Dec  7 03:07:52 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: branches/upstream/libmoosex-role-parameterized-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/Makefile.PL?rev=48379&op=diff
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/Makefile.PL (original)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/Makefile.PL Mon Dec  7 03:07:52 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: branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized.pm?rev=48379&op=diff
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized.pm (original)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized.pm Mon Dec  7 03:07:52 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: branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm?rev=48379&op=diff
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm (original)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm Mon Dec  7 03:07:52 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: branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm?rev=48379&op=diff
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm (original)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm Mon Dec  7 03:07:52 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: branches/upstream/libmoosex-role-parameterized-perl/current/t/001-parameters.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/t/001-parameters.t?rev=48379&op=diff
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/t/001-parameters.t (original)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/t/001-parameters.t Mon Dec  7 03:07:52 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: branches/upstream/libmoosex-role-parameterized-perl/current/t/003-apply.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/t/003-apply.t?rev=48379&op=diff
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/t/003-apply.t (original)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/t/003-apply.t Mon Dec  7 03:07:52 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;

Added: branches/upstream/libmoosex-role-parameterized-perl/current/t/018-parameter-roles.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/t/018-parameter-roles.t?rev=48379&op=file
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/t/018-parameter-roles.t (added)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/t/018-parameter-roles.t Mon Dec  7 03:07:52 2009
@@ -1,0 +1,61 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More skip_all => "Not implemented yet";
+#use Test::More tests => 7;
+
+{
+    package Test::Role;
+    use MooseX::Role::Parameterized;
+
+    parameter name => (
+        isa => "Str",
+        is  => "ro",
+        required => 1,
+    );
+
+    role {
+        my $p = shift;
+
+        method foo => sub { "hello " . $p->name };
+
+        has blech => (
+            metaclass => "MooseX::Role::Parameterized::Meta::Parameter",
+            isa => "Str",
+            is  => "ro",
+            required => 1,
+        );
+    };
+
+    package Test::Consumer;
+    use MooseX::Role::Parameterized -parameter_roles => [
+        'Test::Role' => { name => "foo" },
+    ];
+
+    role {
+        my $p = shift;
+
+        method parameters => sub { $p };
+    };
+
+    package Test::Class;
+    use Moose;
+
+    with 'Test::Consumer' => { blech => "yes" };
+}
+
+my $obj = Test::Class->new;
+
+does_ok( $obj, "Test::Consumer" );
+
+can_ok( $obj, "parameters" );
+
+my $p = $obj->parameters;
+
+does_ok( $p, "Test::Role" );
+can_ok( $p, "foo" );
+can_ok( $p, "blech" );
+
+is( $p->blech, "yes" );
+
+is( $p->foo, "hello foo" );

Added: branches/upstream/libmoosex-role-parameterized-perl/current/t/102-nested.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/t/102-nested.t?rev=48379&op=file
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/t/102-nested.t (added)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/t/102-nested.t Mon Dec  7 03:07:52 2009
@@ -1,0 +1,53 @@
+use strict;
+use warnings;
+use Test::More;
+use Test::Exception;
+
+use FindBin;
+use lib "$FindBin::Bin/lib";
+
+{
+    package Foo;
+    use MooseX::Role::Parameterized;
+
+    parameter 'outer' => (
+        default => 'yep..',
+    );
+
+    role {
+        with 'Bar', { include_is_bar => 0 };
+
+        method is_foo => sub { 1 };
+    };
+}
+
+{
+    package Moo;
+    use Moose;
+    ::lives_ok(sub {
+        with 'Foo';
+    });
+}
+
+{
+    package se;
+    use Moose;
+    ::lives_ok(sub {
+        with 'Bar';
+    });
+}
+
+my $foo = Moo->meta->roles->[0];
+ok($foo->has_method('is_foo'), 'Foo got the "is_foo" method');
+ok(!$foo->has_method('is_bar'), 'Foo did not get the "is_bar" method from Bar');
+
+my $bar = se->meta->roles->[0];
+ok($bar->has_method('is_bar'), 'Bar got the "is_bar" method');
+ok(!$bar->has_method('is_foo'), 'Bar does not get "is_foo"');
+
+ok(Foo->meta->has_parameter('outer'), 'Foo has outer param');
+ok(Bar->meta->has_parameter('include_is_bar'), 'Bar has include_is_bar param');
+ok(!Foo->meta->has_parameter('include_is_bar'), 'Foo does not have include_is_bar param');
+ok(!Bar->meta->has_parameter('outer'), 'Bar does not have outer param');
+
+done_testing;

Added: branches/upstream/libmoosex-role-parameterized-perl/current/t/200-curried-parameterized-role.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/t/200-curried-parameterized-role.t?rev=48379&op=file
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/t/200-curried-parameterized-role.t (added)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/t/200-curried-parameterized-role.t Mon Dec  7 03:07:52 2009
@@ -1,0 +1,43 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More skip_all => "not implemented yet";
+
+do {
+    package YAPC;
+    use MooseX::Role::Parameterized;
+
+    parameter organizer => (
+        isa      => 'Str',
+        required => 1,
+    );
+
+    parameter location => (
+        isa      => 'Str',
+        required => 1,
+    );
+
+    role {
+        my $p = shift;
+
+        method describe => sub {
+            return sprintf 'organized by %s in %s',
+                $p->organizer,
+                $p->location;
+        };
+    };
+};
+
+do {
+    package YAPC::Asia;
+    use MooseX::Role::Parameterized;
+
+    # This can't work sanely; if you want the role to be parameterized you need
+    # to declare it as such
+#    use Moose::Role;
+
+    with 'YAPC' => {
+        location => 'Tokyo',
+    };
+};
+

Added: branches/upstream/libmoosex-role-parameterized-perl/current/t/lib/Bar.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmoosex-role-parameterized-perl/current/t/lib/Bar.pm?rev=48379&op=file
==============================================================================
--- branches/upstream/libmoosex-role-parameterized-perl/current/t/lib/Bar.pm (added)
+++ branches/upstream/libmoosex-role-parameterized-perl/current/t/lib/Bar.pm Mon Dec  7 03:07:52 2009
@@ -1,0 +1,17 @@
+package Bar;
+
+use MooseX::Role::Parameterized;
+
+parameter include_is_bar => (
+    isa     => 'Bool',
+    default => 1,
+);
+
+role {
+    my $p = shift;
+    if ($p->include_is_bar) {
+        method is_bar => sub { 1 };
+    }
+};
+
+1;




More information about the Pkg-perl-cvs-commits mailing list