Default parameters to read-only
Shawn M Moore [Sun, 18 Jan 2009 02:51:24 +0000 (02:51 +0000)]
lib/MooseX/Role/Parameterized/Meta/Parameter.pm
t/001-parameters.t
t/002-role-block.t
t/003-apply.t
t/004-with.t
t/005-with-parameterized.t
t/008-method-modifers.t
t/014-compose-parameterizable.t

index 1ae50b7..a37f643 100644 (file)
@@ -2,6 +2,20 @@ package MooseX::Role::Parameterized::Meta::Parameter;
 use Moose;
 extends 'Moose::Meta::Attribute';
 
+# This doesn't actually do anything because _process_options does not consult
+# the default value of "is". hrm.
+has '+is' => (
+    default => 'ro',
+);
+
+around _process_options => sub {
+    my $orig = shift;
+    my ($class, $name, $options) = @_;
+
+    $options->{is} ||= 'ro';
+
+    $orig->(@_);
+};
 
 __PACKAGE__->meta->make_immutable(
     inline_constructor => 1,
index 85d9ae4..6d208f1 100644 (file)
@@ -22,7 +22,6 @@ do {
     use MooseX::Role::Parameterized;
 
     parameter length => (
-        is       => 'ro',
         isa      => 'Int',
         required => 1,
     );
index fab2425..b30f256 100644 (file)
@@ -20,7 +20,6 @@ do {
         ($parameters, %args) = @_;
 
         has age => (
-            is      => 'ro',
             default => $parameters->default_age,
         );
 
index 925dc2b..43ae9a9 100644 (file)
@@ -10,20 +10,17 @@ do {
     use Moose::Util::TypeConstraints;
 
     parameter format => (
-        is       => 'ro',
         isa      => (enum ['Dumper', 'Storable']),
         required => 1,
     );
 
     parameter freeze_method => (
-        is      => 'ro',
         isa     => 'Str',
         lazy    => 1,
         default => sub { "freeze_" . shift->format },
     );
 
     parameter thaw_method => (
-        is      => 'ro',
         isa     => 'Str',
         lazy    => 1,
         default => sub { "thaw_" . shift->format },
index 9bb650b..7980e49 100644 (file)
@@ -22,7 +22,6 @@ do {
     use MooseX::Role::Parameterized;
 
     parameter slot => (
-        is       => 'ro',
         isa      => 'Str',
         required => 1,
     );
index 415cd8f..5d5e34c 100644 (file)
@@ -31,7 +31,6 @@ do {
     use MooseX::Role::Parameterized;
 
     parameter slot => (
-        is       => 'ro',
         isa      => 'Str',
         required => 1,
     );
index 2380db4..2c1d515 100644 (file)
@@ -10,7 +10,6 @@ do {
     use MooseX::Role::Parameterized;
 
     parameter method => (
-        is       => 'ro',
         isa      => 'Str',
         required => 1,
     );
index 4423fe4..24cccf1 100644 (file)
@@ -8,7 +8,6 @@ do {
     use MooseX::Role::Parameterized;
 
     parameter attribute => (
-        is  => 'ro',
         isa => 'Str',
     );