The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Changes 07
META.json 11
META.yml 11
Makefile.PL 11
README 11
SIGNATURE 1919
dist.ini 11
lib/MooseX/ClassAttribute/Meta/Role/Attribute.pm 22
lib/MooseX/ClassAttribute/Trait/Application/ToClass.pm 22
lib/MooseX/ClassAttribute/Trait/Application/ToRole.pm 22
lib/MooseX/ClassAttribute/Trait/Application.pm 22
lib/MooseX/ClassAttribute/Trait/Attribute.pm 58106
lib/MooseX/ClassAttribute/Trait/Class.pm 3213
lib/MooseX/ClassAttribute/Trait/Mixin/HasClassAttributes.pm 22
lib/MooseX/ClassAttribute/Trait/Role/Composite.pm 22
lib/MooseX/ClassAttribute/Trait/Role.pm 22
lib/MooseX/ClassAttribute.pm 22
17 files changed (This is a version diff) 130166
@@ -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