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