Moose::Policy, just Moose::Util::MetaRole.
use Module::Build;
my $builder = Module::Build->new
- ( module_name => 'MooseX::Policy::SemiAffordanceAccessor',
+ ( module_name => 'MooseX::SemiAffordanceAccessor',
license => 'perl',
- requires => { 'Moose' => 0,
- 'Moose::Policy' => 0,
+ requires => { 'Moose' => 0.55_01,
},
build_requires => { 'Test::More' => 0,
},
+0.03
+
+- Renamed to MooseX::SemiAffordanceAccessor because it no longer
+ requires the Moose::Policy module.
+
+
0.02 2007-11-15
- Require 5.6.1 in the Build.PL.
+++ /dev/null
-Build.PL
-Changes
-lib/MooseX/Policy/SemiAffordanceAccessor.pm
-MANIFEST
-META.yml # Will be created by "make dist"
-README # Will be created by "make dist"
-t/basic.t
-t/perlcritic.t
-t/pod-coverage.t
-t/pod.t
-Makefile.PL
+++ /dev/null
-package MooseX::Policy::SemiAffordanceAccessor;
-
-use strict;
-use warnings;
-
-our $VERSION = '0.02';
-our $AUTHORITY = 'cpan:DROLSKY';
-
-use constant attribute_metaclass => ## no critic ProhibitConstantPragma
- 'MooseX::Policy::SemiAffordanceAccessor::Attribute';
-
-
-package MooseX::Policy::SemiAffordanceAccessor::Attribute; ## no critic ProhibitMultiplePackages
-
-
-use Moose;
-
-extends 'Moose::Meta::Attribute';
-
-before '_process_options' => sub
-{
- my $class = shift;
- my $name = shift;
- my $options = shift;
-
- if ( exists $options->{is} &&
- ! ( exists $options->{reader} || exists $options->{writer} ) )
- {
- if ( $options->{is} eq 'ro' )
- {
- $options->{reader} = $name;
- }
- elsif ( $options->{is} eq 'rw' )
- {
- $options->{reader} = $name;
-
- my $prefix = 'set';
- if ( $name =~ s/^_// )
- {
- $prefix = '_set';
- }
-
- $options->{writer} = $prefix . q{_} . $name;
- }
-
- delete $options->{is};
- }
-};
-
-
-1;
-
-__END__
-
-=pod
-
-=head1 NAME
-
-MooseX::Policy::SemiAffordanceAccessor - A policy to name accessors foo() and set_foo()
-
-=head1 SYNOPSIS
-
- use Moose::Policy 'MooseX::Policy::SemiAffordanceAccessor';
- use Moose;
-
- # make some attributes
-
-=head1 DESCRIPTION
-
-This class does not provide any methods. Just loading it changes the
-default naming policy for the package so that accessors are separated
-into get and set methods. The get methods have the same name as the
-accessor, while set methods are prefixed with "set_".
-
-If you define an attribute with a leading underscore, then the set
-method will start with "_set_".
-
-If you explicitly set a "reader" or "writer" name when creating an
-attribute, then this policy skips that attribute.
-
-The name "semi-affordance" comes from David Wheeler's Class::Meta
-module.
-
-=head1 AUTHOR
-
-Dave Rolsky, C<< <autarch@urth.org> >>
-
-=head1 BUGS
-
-Please report any bugs or feature requests to
-C<bug-moosex-policy-semiaffordanceaccessor@rt.cpan.org>, or through
-the web interface at L<http://rt.cpan.org>. I will be notified, and
-then you'll automatically be notified of progress on your bug as I
-make changes.
-
-=head1 COPYRIGHT & LICENSE
-
-Copyright 2007 Dave Rolsky, All Rights Reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
--- /dev/null
+package MooseX::SemiAffordanceAccessor;
+
+use strict;
+use warnings;
+
+our $VERSION = '0.03';
+
+use Moose ();
+use Moose::Exporter;
+use Moose::Util::MetaRole;
+use MooseX::SemiAffordanceAccessor::Role::Attribute;
+
+# The main reason to use this is to ensure that we get the right value
+# in $p{for_class} later.
+Moose::Exporter->setup_import_methods();
+
+
+sub init_meta
+{
+ shift;
+ my %p = @_;
+
+ Moose->init_meta(%p);
+
+ return
+ Moose::Util::MetaRole::apply_metaclass_roles
+ ( for_class => $p{for_class},
+ attribute_metaclass_roles =>
+ ['MooseX::SemiAffordanceAccessor::Role::Attribute'],
+ );
+}
+
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+MooseX::SemiAffordanceAccessor - Name your accessors foo() and set_foo()
+
+=head1 SYNOPSIS
+
+ use MooseX::SemiAffordanceAccessor;
+ use Moose;
+
+ # make some attributes
+
+=head1 DESCRIPTION
+
+This module does not provide any methods. Simply loading it changes
+the default naming policy for the loading class so that accessors are
+separated into get and set methods. The get methods have the same name
+as the accessor, while set methods are prefixed with "set_".
+
+If you define an attribute with a leading underscore, then the set
+method will start with "_set_".
+
+If you explicitly set a "reader" or "writer" name when creating an
+attribute, then that attribute's naming scheme is left unchanged.
+
+The name "semi-affordance" comes from David Wheeler's Class::Meta
+module.
+
+=head1 AUTHOR
+
+Dave Rolsky, C<< <autarch@urth.org> >>
+
+=head1 BUGS
+
+Please report any bugs or feature requests to
+C<bug-moosex-semiaffordanceaccessor@rt.cpan.org>, or through
+the web interface at L<http://rt.cpan.org>. I will be notified, and
+then you'll automatically be notified of progress on your bug as I
+make changes.
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2007 Dave Rolsky, All Rights Reserved.
+
+This program is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
--- /dev/null
+package MooseX::SemiAffordanceAccessor::Role::Attribute;
+
+use strict;
+use warnings;
+
+use Moose::Role;
+
+
+before '_process_options' => sub
+{
+ my $class = shift;
+ my $name = shift;
+ my $options = shift;
+
+ if ( exists $options->{is} &&
+ ! ( exists $options->{reader} || exists $options->{writer} ) )
+ {
+ if ( $options->{is} eq 'ro' )
+ {
+ $options->{reader} = $name;
+ }
+ elsif ( $options->{is} eq 'rw' )
+ {
+ $options->{reader} = $name;
+
+ my $prefix = 'set';
+ if ( $name =~ s/^_// )
+ {
+ $prefix = '_set';
+ }
+
+ $options->{writer} = $prefix . q{_} . $name;
+ }
+
+ delete $options->{is};
+ }
+};
+
+no Moose::Role;
+
+1;
use strict;
use warnings;
-use Test::More tests => 8;
+use Test::More tests => 12;
{
}
{
- package SF;
+ package SAA;
- use Moose::Policy 'MooseX::Policy::SemiAffordanceAccessor';
+ use MooseX::SemiAffordanceAccessor;
use Moose;
has 'thing' => ( is => 'rw' );
has '_private' => ( is => 'rw' );
}
+{
+ package SAA2;
+
+ # Make sure load order doesn't matter
+ use Moose;
+ use MooseX::SemiAffordanceAccessor;
+
+ has 'thing' => ( is => 'rw' );
+ has '_private' => ( is => 'rw' );
+}
+
ok( Standard->can('thing'), 'Standard->thing() exists' );
ok( ! Standard->can('set_thing'), 'Standard->set_thing() does not exist' );
ok( Standard->can('_private'), 'Standard->_private() exists' );
ok( ! Standard->can('_set_private'), 'Standard->_set_private() does not exist' );
-ok( SF->can('thing'), 'SF->thing() exists' );
-ok( SF->can('set_thing'), 'SF->set_thing() exists' );
-ok( SF->can('_private'), 'SF->_private() exists' );
-ok( SF->can('_set_private'), 'SF->_set_private() exists' );
+ok( SAA->can('thing'), 'SAA->thing() exists' );
+ok( SAA->can('set_thing'), 'SAA->set_thing() exists' );
+ok( SAA->can('_private'), 'SAA->_private() exists' );
+ok( SAA->can('_set_private'), 'SAA->_set_private() exists' );
+
+ok( SAA2->can('thing'), 'SAA2->thing() exists' );
+ok( SAA2->can('set_thing'), 'SAA2->set_thing() exists' );
+ok( SAA2->can('_private'), 'SAA2->_private() exists' );
+ok( SAA2->can('_set_private'), 'SAA2->_set_private() exists' );