@@ -1,3 +1,10 @@
+0.24 2011-02-22
+
+- This release provides forward compatibility with Moose 1.99+. It will still
+ work with Moose 1.23 as well. Partially based on work originally done by
+ Moritz Onken.
+
+
0.23 2011-02-13
- Fixed a bug where applying a role with class attributes didn't record the
@@ -47,6 +47,6 @@
"web" : "http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo/MooseX-ClassAttribute.git;a=summary"
}
},
- "version" : "0.23"
+ "version" : "0.24"
}
@@ -23,4 +23,4 @@ requires:
resources:
bugtracker: http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-ClassAttribute
repository: git://git.moose.perl.org/MooseX-ClassAttribute.git
-version: 0.23
+version: 0.24
@@ -29,7 +29,7 @@ my %WriteMakefileArgs = (
'namespace::autoclean' => '0.11',
'namespace::clean' => '0.20'
},
- 'VERSION' => '0.23',
+ 'VERSION' => '0.24',
'test' => {
'TESTS' => 't/*.t'
}
@@ -1,7 +1,7 @@
This archive contains the distribution MooseX-ClassAttribute,
-version 0.23:
+version 0.24:
Declare class attributes Moose-style
@@ -14,25 +14,25 @@ not run its Makefile.PL or Build.PL.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
-SHA1 6004fa86ffb8894e3fb74e5008fbd66aae5d8f9a Changes
+SHA1 5b252413159af4738cfa60337b04b2de919fdc02 Changes
SHA1 aafebdede504b7b3c67c962ba6f78996a60aa047 INSTALL
SHA1 c715d20265d2931c7564fc64abfdc4f8ff33e297 LICENSE
SHA1 aae934526223fd0b01366641f13c1d03fa4a54ac MANIFEST
-SHA1 45e7be9a081848bc043df2116e9882a05a226374 META.json
-SHA1 096229d941241551cb8e936b2f14d3462f082764 META.yml
-SHA1 1c5d67bd8ded6e1f078d0d040f7ae9473e08d57a Makefile.PL
-SHA1 63f640c11b0e0decdd49fc4015f1618adabdcc0d README
-SHA1 34e6cc1f1f95eb8b9cd51a877d4939307a3d3f83 dist.ini
-SHA1 0f141ecf4b1c80a9b8df55453f579c2e39189651 lib/MooseX/ClassAttribute.pm
-SHA1 020d9e03e13c69d0c1ea30c94471eedc1325afaf lib/MooseX/ClassAttribute/Meta/Role/Attribute.pm
-SHA1 96b71f23854f26f32212a43344dfbfb5b947ed8c lib/MooseX/ClassAttribute/Trait/Application.pm
-SHA1 107ff1a7dd0bd4c6111ff5beaa9af88159a9bc7f lib/MooseX/ClassAttribute/Trait/Application/ToClass.pm
-SHA1 f69e53b86400a1076647dbfcd7b48864aae2ee90 lib/MooseX/ClassAttribute/Trait/Application/ToRole.pm
-SHA1 ba4dbf77cfca8db64791313a09e7170fa442262b lib/MooseX/ClassAttribute/Trait/Attribute.pm
-SHA1 0e59f36b1950f6ba3afc14dfbae91e1158cb1261 lib/MooseX/ClassAttribute/Trait/Class.pm
-SHA1 57729ab8143945d6893c107ad2a9432b4467aaee lib/MooseX/ClassAttribute/Trait/Mixin/HasClassAttributes.pm
-SHA1 5e3545ed70aa1163da4e4a4e0a1b0a5e229caf47 lib/MooseX/ClassAttribute/Trait/Role.pm
-SHA1 cb02a6fbb35c00ac1d1fec7670195d3f9e99b95e lib/MooseX/ClassAttribute/Trait/Role/Composite.pm
+SHA1 1bbf682c6fc376ebf937ae1ae4273d225f565833 META.json
+SHA1 ecd5728b0cd6e23017dae7ea1e8e3a0e493737cb META.yml
+SHA1 96fdd0e7f74536f8aba8580d26d71df4f2a92797 Makefile.PL
+SHA1 f2b4de39cf91aac9e1fb3085f6a469e0c6fd4f5a README
+SHA1 30bdbc438bdebce1bcd693e2ee71f939b3b35c14 dist.ini
+SHA1 deac81843a834a3eb798633f5a3f53ddc6357c51 lib/MooseX/ClassAttribute.pm
+SHA1 7f0c059cf28987d0f39cb17c5458ec5a0cf9254a lib/MooseX/ClassAttribute/Meta/Role/Attribute.pm
+SHA1 93e0f72556f1d20a5c3c2f9b21bd91d7305d8daf lib/MooseX/ClassAttribute/Trait/Application.pm
+SHA1 d89187996711b658b5f2374d4355fd0a49f7faa1 lib/MooseX/ClassAttribute/Trait/Application/ToClass.pm
+SHA1 3e59acac774e357e655f260ecb74c2cdb0bb1c11 lib/MooseX/ClassAttribute/Trait/Application/ToRole.pm
+SHA1 127b58fcb9a39a58efbba78f6ce32f89ce5d0dd1 lib/MooseX/ClassAttribute/Trait/Attribute.pm
+SHA1 49771840e16e0153b520b899fba784118d86f21e lib/MooseX/ClassAttribute/Trait/Class.pm
+SHA1 f96fc76763dc90f67acf1c2f64e9be34c71dd7ef lib/MooseX/ClassAttribute/Trait/Mixin/HasClassAttributes.pm
+SHA1 499c73ca659a5ad15438f4c1f5d869b36b793a17 lib/MooseX/ClassAttribute/Trait/Role.pm
+SHA1 897b8a4745d5de64efeb859944a6f87348cbc42e lib/MooseX/ClassAttribute/Trait/Role/Composite.pm
SHA1 638402c597ff7c41355b3ea814db19f30275b8de t/01-basic.t
SHA1 d0704e6a6f5c1299179d9c848196d05af53a4b0a t/02-immutable.t
SHA1 0337e7293738c7158ec0877737df65879e73dcd4 t/03-introspection.t
@@ -53,7 +53,7 @@ SHA1 b30cbdfaf935017c4568c0c91b242438cb87786e t/release-pod-syntax.t
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
-iEYEARECAAYFAk1Yo50ACgkQIgMCsV8qvRI0+QCcDcZa27JRNXHfGqPRzyxBUXDM
-0LMAnRg4bpX562fsgWdypYi97R3Xsxnj
-=yzuF
+iEYEARECAAYFAk1kSp0ACgkQIgMCsV8qvRLWDgCfeVKvHdSCGMa0/rNfpi51uwPm
+o7gAn24cKgSVwDXYUCnzqh5XKldWpCtr
+=V5Mz
-----END PGP SIGNATURE-----
@@ -4,7 +4,7 @@ license = Artistic_2_0
copyright_holder = Dave Rolsky
copyright_year = 2011
-version = 0.23
+version = 0.24
[@Basic]
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute::Meta::Role::Attribute;
BEGIN {
- $MooseX::ClassAttribute::Meta::Role::Attribute::VERSION = '0.23';
+ $MooseX::ClassAttribute::Meta::Role::Attribute::VERSION = '0.24';
}
use strict;
@@ -38,7 +38,7 @@ MooseX::ClassAttribute::Meta::Role::Attribute - An attribute metaclass for class
=head1 VERSION
-version 0.23
+version 0.24
=head1 DESCRIPTION
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute::Trait::Application::ToClass;
BEGIN {
- $MooseX::ClassAttribute::Trait::Application::ToClass::VERSION = '0.23';
+ $MooseX::ClassAttribute::Trait::Application::ToClass::VERSION = '0.24';
}
use strict;
@@ -62,7 +62,7 @@ MooseX::ClassAttribute::Trait::Application::ToClass - A trait that supports appl
=head1 VERSION
-version 0.23
+version 0.24
=head1 DESCRIPTION
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute::Trait::Application::ToRole;
BEGIN {
- $MooseX::ClassAttribute::Trait::Application::ToRole::VERSION = '0.23';
+ $MooseX::ClassAttribute::Trait::Application::ToRole::VERSION = '0.24';
}
use strict;
@@ -72,7 +72,7 @@ MooseX::ClassAttribute::Trait::Application::ToRole - A trait that supports apply
=head1 VERSION
-version 0.23
+version 0.24
=head1 DESCRIPTION
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute::Trait::Application;
BEGIN {
- $MooseX::ClassAttribute::Trait::Application::VERSION = '0.23';
+ $MooseX::ClassAttribute::Trait::Application::VERSION = '0.24';
}
use strict;
@@ -27,7 +27,7 @@ MooseX::ClassAttribute::Trait::Application - A trait that supports role applicat
=head1 VERSION
-version 0.23
+version 0.24
=head1 DESCRIPTION
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute::Trait::Attribute;
BEGIN {
- $MooseX::ClassAttribute::Trait::Attribute::VERSION = '0.23';
+ $MooseX::ClassAttribute::Trait::Attribute::VERSION = '0.24';
}
use strict;
@@ -13,7 +13,7 @@ use Moose::Role;
# because it overrides a lot of behavior. However, as a subclass it
# won't cooperate with _other_ subclasses.
-around '_process_options' => sub {
+around _process_options => sub {
my $orig = shift;
my $class = shift;
my $name = shift;
@@ -25,25 +25,19 @@ around '_process_options' => sub {
return $class->$orig( $name, $options );
};
-around attach_to_class => sub {
- my $orig = shift;
+after attach_to_class => sub {
my $self = shift;
my $meta = shift;
- $self->$orig($meta);
-
$self->_initialize($meta)
unless $self->is_lazy();
};
-around 'detach_from_class' => sub {
- my $orig = shift;
+before detach_from_class => sub {
my $self = shift;
my $meta = shift;
$self->clear_value($meta);
-
- $self->$orig($meta);
};
sub _initialize {
@@ -58,7 +52,7 @@ sub _initialize {
}
}
-around 'default' => sub {
+around default => sub {
my $orig = shift;
my $self = shift;
@@ -71,7 +65,7 @@ around 'default' => sub {
return $default;
};
-around '_call_builder' => sub {
+around _call_builder => sub {
shift;
my $self = shift;
my $class = shift;
@@ -88,7 +82,7 @@ around '_call_builder' => sub {
. "'" );
};
-around 'set_value' => sub {
+around set_value => sub {
shift;
my $self = shift;
shift; # ignoring instance or class name
@@ -98,7 +92,7 @@ around 'set_value' => sub {
->set_class_attribute_value( $self->name() => $value );
};
-around 'get_value' => sub {
+around get_value => sub {
shift;
my $self = shift;
@@ -106,7 +100,7 @@ around 'get_value' => sub {
->get_class_attribute_value( $self->name() );
};
-around 'has_value' => sub {
+around has_value => sub {
shift;
my $self = shift;
@@ -114,7 +108,7 @@ around 'has_value' => sub {
->has_class_attribute_value( $self->name() );
};
-around 'clear_value' => sub {
+around clear_value => sub {
shift;
my $self = shift;
@@ -122,47 +116,101 @@ around 'clear_value' => sub {
->clear_class_attribute_value( $self->name() );
};
-around 'inline_get' => sub {
- shift;
- my $self = shift;
-
- return $self->associated_class()
- ->inline_get_class_slot_value( $self->slots() );
-};
-
-around 'inline_set' => sub {
- shift;
- my $self = shift;
- shift;
- my $value = shift;
-
- my $meta = $self->associated_class();
-
- my $code
- = $meta->inline_set_class_slot_value( $self->slots(), $value ) . ";";
- $code
- .= $meta->inline_weaken_class_slot_value( $self->slots(), $value )
- . " if ref $value;"
- if $self->is_weak_ref();
-
- return $code;
-};
-
-around 'inline_has' => sub {
- shift;
- my $self = shift;
-
- return $self->associated_class()
- ->inline_is_class_slot_initialized( $self->slots() );
-};
-
-around 'inline_clear' => sub {
- shift;
- my $self = shift;
-
- return $self->associated_class()
- ->inline_deinitialize_class_slot( $self->slots() );
-};
+if ( $Moose::VERSION < 1.99 ) {
+ around inline_get => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_get_class_slot_value( $self->slots() );
+ };
+
+ around inline_set => sub {
+ shift;
+ my $self = shift;
+ shift;
+ my $value = shift;
+
+ my $meta = $self->associated_class();
+
+ my $code
+ = $meta->_inline_set_class_slot_value( $self->slots(), $value )
+ . ";";
+ $code
+ .= $meta->_inline_weaken_class_slot_value( $self->slots(), $value )
+ . " if ref $value;"
+ if $self->is_weak_ref();
+
+ return $code;
+ };
+
+ around inline_has => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_is_class_slot_initialized( $self->slots() );
+ };
+
+ around inline_clear => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_deinitialize_class_slot( $self->slots() );
+ };
+}
+else {
+ around _inline_instance_get => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_get_class_slot_value( $self->slots() );
+ };
+
+ around _inline_instance_set => sub {
+ shift;
+ my $self = shift;
+ shift;
+ my $value = shift;
+
+ return $self->associated_class()
+ ->_inline_set_class_slot_value( $self->slots(), $value );
+ };
+
+ around _inline_instance_has => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_is_class_slot_initialized( $self->slots() );
+ };
+
+ around _inline_instance_clear => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_deinitialize_class_slot( $self->slots() );
+ };
+
+ around _inline_weaken_value => sub {
+ shift;
+ my $self = shift;
+ shift;
+ my $value = shift;
+
+ return unless $self->is_weak_ref();
+
+ return (
+ $self->associated_class->_inline_weaken_class_slot_value(
+ $self->slots(), $value
+ ),
+ 'if ref ' . $value . ';',
+ );
+ };
+}
1;
@@ -178,7 +226,7 @@ MooseX::ClassAttribute::Trait::Attribute - A trait for class attributes
=head1 VERSION
-version 0.23
+version 0.24
=head1 DESCRIPTION
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute::Trait::Class;
BEGIN {
- $MooseX::ClassAttribute::Trait::Class::VERSION = '0.23';
+ $MooseX::ClassAttribute::Trait::Class::VERSION = '0.24';
}
use strict;
@@ -178,7 +178,7 @@ sub _class_attribute_var_name {
return $self->name() . q'::__ClassAttributeValues';
}
-sub inline_class_slot_access {
+sub _inline_class_slot_access {
my $self = shift;
my $name = shift;
@@ -188,42 +188,42 @@ sub inline_class_slot_access {
. quotemeta($name) . '"}';
}
-sub inline_get_class_slot_value {
+sub _inline_get_class_slot_value {
my $self = shift;
my $name = shift;
- return $self->inline_class_slot_access($name);
+ return $self->_inline_class_slot_access($name);
}
-sub inline_set_class_slot_value {
+sub _inline_set_class_slot_value {
my $self = shift;
my $name = shift;
my $val_name = shift;
- return $self->inline_class_slot_access($name) . ' = ' . $val_name;
+ return $self->_inline_class_slot_access($name) . ' = ' . $val_name;
}
-sub inline_is_class_slot_initialized {
+sub _inline_is_class_slot_initialized {
my $self = shift;
my $name = shift;
- return 'exists ' . $self->inline_class_slot_access($name);
+ return 'exists ' . $self->_inline_class_slot_access($name);
}
-sub inline_deinitialize_class_slot {
+sub _inline_deinitialize_class_slot {
my $self = shift;
my $name = shift;
- return 'delete ' . $self->inline_class_slot_access($name);
+ return 'delete ' . $self->_inline_class_slot_access($name);
}
-sub inline_weaken_class_slot_value {
+sub _inline_weaken_class_slot_value {
my $self = shift;
my $name = shift;
return
'Scalar::Util::weaken( '
- . $self->inline_class_slot_access($name) . ')';
+ . $self->_inline_class_slot_access($name) . ')';
}
1;
@@ -240,7 +240,7 @@ MooseX::ClassAttribute::Trait::Class - A trait for classes with class attributes
=head1 VERSION
-version 0.23
+version 0.24
=head1 SYNOPSIS
@@ -305,25 +305,6 @@ you're doing some deep hacking. They are named as public methods
solely because they are used by other meta roles and classes in this
distribution.
-=head2 $meta->inline_class_slot_access($name)
-
-=head2 $meta->inline_get_class_slot_value($name)
-
-=head2 $meta->inline_set_class_slot_value($name, $val_name)
-
-=head2 $meta->inline_is_class_slot_initialized($name)
-
-=head2 $meta->inline_deinitialize_class_slot($name)
-
-=head2 $meta->inline_weaken_class_slot_value($name)
-
-These methods return code snippets for inlining.
-
-There's really no good reason for you to call these methods unless
-you're doing some deep hacking. They are named as public methods
-solely because they are used by other meta roles and classes in this
-distribution.
-
=head1 BUGS
See L<MooseX::ClassAttribute> for details.
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute::Trait::Mixin::HasClassAttributes;
BEGIN {
- $MooseX::ClassAttribute::Trait::Mixin::HasClassAttributes::VERSION = '0.23';
+ $MooseX::ClassAttribute::Trait::Mixin::HasClassAttributes::VERSION = '0.24';
}
use strict;
@@ -89,7 +89,7 @@ MooseX::ClassAttribute::Trait::Mixin::HasClassAttributes - A mixin trait for thi
=head1 VERSION
-version 0.23
+version 0.24
=head1 DESCRIPTION
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute::Trait::Role::Composite;
BEGIN {
- $MooseX::ClassAttribute::Trait::Role::Composite::VERSION = '0.23';
+ $MooseX::ClassAttribute::Trait::Role::Composite::VERSION = '0.24';
}
use strict;
@@ -87,7 +87,7 @@ MooseX::ClassAttribute::Trait::Role::Composite - A trait that supports applying
=head1 VERSION
-version 0.23
+version 0.24
=head1 DESCRIPTION
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute::Trait::Role;
BEGIN {
- $MooseX::ClassAttribute::Trait::Role::VERSION = '0.23';
+ $MooseX::ClassAttribute::Trait::Role::VERSION = '0.24';
}
use strict;
@@ -52,7 +52,7 @@ MooseX::ClassAttribute::Trait::Role - A trait for roles with class attributes
=head1 VERSION
-version 0.23
+version 0.24
=head1 SYNOPSIS
@@ -1,6 +1,6 @@
package MooseX::ClassAttribute;
BEGIN {
- $MooseX::ClassAttribute::VERSION = '0.23';
+ $MooseX::ClassAttribute::VERSION = '0.24';
}
use strict;
@@ -51,7 +51,7 @@ MooseX::ClassAttribute - Declare class attributes Moose-style
=head1 VERSION
-version 0.23
+version 0.24
=head1 SYNOPSIS