Skip to content

Commit

Permalink
simplify inline code by returning arrays
Browse files Browse the repository at this point in the history
  • Loading branch information
monken committed Feb 20, 2012
1 parent 4d3bc05 commit 5e9cec4
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 52 deletions.
4 changes: 2 additions & 2 deletions lib/MooseX/Attribute/Deflator/Meta/Role/Attribute.pm
Expand Up @@ -24,7 +24,7 @@ sub _inline_deflator {
'$_[1]', '$type_constraint',
'$type_coercion', '$type_message',
);
my $deflator = $tc
my @deflator = $tc
? do {
( $tc, undef, my $inline ) = $REGISTRY->$find($tc);
next unless $inline;
Expand Down Expand Up @@ -65,7 +65,7 @@ sub _inline_deflator {
%{ $self->_eval_environment },
'$registry' => \$REGISTRY
},
source => join( "\n", @code, $deflator, '}' )
source => join( "\n", @code, @deflator, '}' )
)
);
$type eq 'deflator'
Expand Down
36 changes: 14 additions & 22 deletions lib/MooseX/Attribute/Deflator/Moose.pm
Expand Up @@ -30,19 +30,17 @@ deflate 'HashRef[]', via {
return $deflate->( $value, $constraint->parent );
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my $parameter = $deflators->( $constraint->type_parameter );
return join( "\n",
return (
'$value = {%$value};',
'while ( my ( $k, $v ) = each %$value ) {',
'$value->{$k} = do {',
' my $value = $value->{$k};',
' $value = do {',
$parameter,
$deflators->( $constraint->type_parameter ),
' };',
' };',
'}',
$parent,
$deflators->( $constraint->parent ),
);
};

Expand All @@ -56,17 +54,15 @@ inflate 'HashRef[]', via {
return $value;
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my $parameter = $deflators->( $constraint->type_parameter );
return join( "\n",
return (
'$value = do {',
$parent,
$deflators->( $constraint->parent ),
' };',
'while ( my ( $k, $v ) = each %$value ) {',
' $value->{$k} = do {',
' my $value = $value->{$k};',
' $value = do {',
$parameter,
$deflators->( $constraint->type_parameter ),
' };',
' };',
'}',
Expand All @@ -81,19 +77,17 @@ deflate 'ArrayRef[]', via {
return $deflate->( $value, $constraint->parent );
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my $parameter = $deflators->( $constraint->type_parameter );
return join( "\n",
return (
'$value = [@$value];',
'for( @$value ) {',
' $_ = do {',
' my $value = $_;',
' $value = do {',
$parameter,
$deflators->( $constraint->type_parameter ),
' };',
' };',
'}',
$parent,
$deflators->( $constraint->parent ),
);
};

Expand All @@ -104,17 +98,15 @@ inflate 'ArrayRef[]', via {
return $value;
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my $parameter = $deflators->( $constraint->type_parameter );
return join( "\n",
return (
'$value = do {',
$parent,
$deflators->( $constraint->parent ),
' };',
'for( @$value ) {',
' $_ = do {',
' my $value = $_;',
' $value = do {',
$parameter,
$deflators->( $constraint->type_parameter ),
' };',
' };',
'}',
Expand Down Expand Up @@ -144,7 +136,7 @@ deflate 'ScalarRef[]', via {
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parameter = $deflators->( $constraint->type_parameter );
return join( "\n", '$value = do {', $parameter, '};', '$$value' );
return ( '$value = do {', $parameter, '};', '$$value' );
};

inflate 'ScalarRef[]', via {
Expand All @@ -153,7 +145,7 @@ inflate 'ScalarRef[]', via {
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parameter = $deflators->( $constraint->type_parameter );
return join( "\n", '$value = do {', $parameter, '};', '\$value' );
return ( '$value = do {', $parameter, '};', '\$value' );
};

1;
Expand Down
45 changes: 17 additions & 28 deletions lib/MooseX/Attribute/Deflator/Structured.pm
Expand Up @@ -9,17 +9,15 @@ deflate 'MooseX::Types::Structured::Optional[]', via {
return $deflate->( $_, $constraint->type_parameter );
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parameter = $deflators->( $constraint->type_parameter );
return $parameter;
return $deflators->( $constraint->type_parameter );
};

inflate 'MooseX::Types::Structured::Optional[]', via {
my ( $attr, $constraint, $inflate ) = @_;
return $inflate->( $_, $constraint->type_parameter );
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parameter = $deflators->( $constraint->type_parameter );
return $parameter;
return $deflators->( $constraint->type_parameter );
};

deflate 'MooseX::Types::Structured::Map[]', via {
Expand All @@ -32,19 +30,17 @@ deflate 'MooseX::Types::Structured::Map[]', via {
return $deflate->( $value, $constraint->parent );
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my $parameter = $deflators->( $constraint->type_constraints->[1] );
return join( "\n",
return (
'$value = {%$value};',
'while ( my ( $k, $v ) = each %$value ) {',
'$value->{$k} = do {',
' my $value = $value->{$k};',
' $value = do {',
$parameter,
$deflators->( $constraint->type_constraints->[1] ),
' };',
' };',
'}',
$parent,
$deflators->( $constraint->parent ),
);
};

Expand All @@ -58,18 +54,15 @@ inflate 'MooseX::Types::Structured::Map[]', via {
return $value;
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my $parameter
= $deflators->( $constraint->type_constraints->[1] );
return join( "\n",
return (
'$value = do {',
$parent,
$deflators->( $constraint->parent ),
' };',
'while ( my ( $k, $v ) = each %$value ) {',
' $value->{$k} = do {',
' my $value = $value->{$k};',
' $value = do {',
$parameter,
$deflators->( $constraint->type_constraints->[1] ),
' };',
' };',
'}',
Expand All @@ -87,7 +80,6 @@ deflate 'MooseX::Types::Structured::Dict[]', via {
return $deflate->( $value, $constraint->parent );
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my %constraints = @{ $constraint->type_constraints };
my @map = 'my $dict;';
while ( my ( $k, $v ) = each %constraints ) {
Expand All @@ -96,7 +88,7 @@ deflate 'MooseX::Types::Structured::Dict[]', via {
'my $value = shift;',
$deflators->($v), ' };' );
}
return join( "\n",
return (
@map,
'$value = {%$value};',
'while ( my ( $k, $v ) = each %$value ) {',
Expand All @@ -105,7 +97,7 @@ deflate 'MooseX::Types::Structured::Dict[]', via {
' $value = $dict->{$k}->($value);',
' };',
'}',
$parent,
$deflators->( $constraint->parent ),
);
};

Expand All @@ -119,7 +111,6 @@ inflate 'MooseX::Types::Structured::Dict[]', via {
return $value;
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my %constraints = @{ $constraint->type_constraints };
my @map = 'my $dict;';
while ( my ( $k, $v ) = each %constraints ) {
Expand All @@ -128,10 +119,10 @@ inflate 'MooseX::Types::Structured::Dict[]', via {
'my $value = shift;',
$deflators->($v), ' };' );
}
return join( "\n",
return (
@map,
'$value = do {',
$parent,
$deflators->( $constraint->parent ),
' };',
'while ( my ( $k, $v ) = each %$value ) {',
'$value->{$k} = do {',
Expand All @@ -141,7 +132,7 @@ inflate 'MooseX::Types::Structured::Dict[]', via {
'}',
'$value',
);
};;
};

deflate 'MooseX::Types::Structured::Tuple[]', via {
my ( $attr, $constraint, $deflate ) = @_;
Expand All @@ -154,7 +145,6 @@ deflate 'MooseX::Types::Structured::Tuple[]', via {
return $deflate->( $value, $constraint->parent );
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my @constraints = @{ $constraint->type_constraints };
my @map = 'my $tuple = [];';
foreach my $tc (@constraints) {
Expand All @@ -163,7 +153,7 @@ deflate 'MooseX::Types::Structured::Tuple[]', via {
'my $value = shift;',
$deflators->($tc), ' });' );
}
return join( "\n",
return (
@map,
'$value = [@$value];',
'for ( my $i = 0; $i < @$value; $i++ ) {',
Expand All @@ -172,7 +162,7 @@ deflate 'MooseX::Types::Structured::Tuple[]', via {
' $value = ($tuple->[$i] || $tuple->[-1])->($value);',
' };',
'}',
$parent,
$deflators->( $constraint->parent ),
);
};

Expand All @@ -187,7 +177,6 @@ inflate 'MooseX::Types::Structured::Tuple[]', via {
return $value;
}, inline_as {
my ( $attr, $constraint, $deflators ) = @_;
my $parent = $deflators->( $constraint->parent );
my @constraints = @{ $constraint->type_constraints };
my @map = 'my $tuple = [];';
foreach my $tc (@constraints) {
Expand All @@ -196,10 +185,10 @@ inflate 'MooseX::Types::Structured::Tuple[]', via {
'my $value = shift;',
$deflators->($tc), ' });' );
}
return join( "\n",
return (
@map,
'$value = do {',
$parent,
$deflators->( $constraint->parent ),
' };',
'for ( my $i = 0; $i < @$value; $i++ ) {',
'$value->[$i] = do {',
Expand Down

0 comments on commit 5e9cec4

Please sign in to comment.