Skip to content

Commit

Permalink
fixed array appending bug in Mojo::Parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed May 30, 2012
1 parent 7bddd47 commit 48d87df
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
1 change: 1 addition & 0 deletions Changes
Expand Up @@ -3,6 +3,7 @@
- Improved IPv6 exception handling in Mojo::IOLoop::Client.
- Improved documentation.
- Improved tests.
- Fixed array appending bug in Mojo::Parameters.

2.97 2012-05-28
- Added workaround to make IO::Socket::SSL work with IO::Socket::IP.
Expand Down
20 changes: 12 additions & 8 deletions lib/Mojo/Parameters.pm
Expand Up @@ -19,7 +19,7 @@ has pair_separator => '&';
sub new {
my $self = shift->SUPER::new;

# Hash/Array
# Pairs
if (@_ > 1) { $self->append(@_) }

# String
Expand All @@ -29,15 +29,19 @@ sub new {
}

sub append {
my ($self, @params) = @_;
my ($self, @pairs) = @_;

# Filter array values
for (my $i = 1; $i < @params; $i += 2) {
next if ref $params[$i] ne 'ARRAY';
push @params, map { ($params[$i - 1], $_) } @{$params[$i]};
splice @params, $i - 1, 2;
my $params = $self->params;
for (my $i = 0; $i < @pairs; $i += 2) {
my $key = $pairs[$i] // '';
my $value = $pairs[$i + 1] // '';

# Single value
unless (ref $value eq 'ARRAY') { push @$params, $key => $value }

# Multiple values
else { push @$params, $key => (defined $_ ? "$_" : '') for @$value }
}
push @{$self->params}, map { defined $_ ? "$_" : '' } @params;

return $self;
}
Expand Down
2 changes: 1 addition & 1 deletion t/mojo/parameters.t
Expand Up @@ -143,7 +143,7 @@ is "$p", 'a=works+too', 'right format';

# Array values
$p = Mojo::Parameters->new;
$p->append(foo => [qw(bar baz)], a => 'b', bar => [qw(bas test)]);
$p->append(foo => [qw(bar baz)], bar => [qw(bas test)], a => 'b');
is_deeply [$p->param('foo')], [qw(bar baz)], 'right values';
is $p->param('a'), 'b', 'right value';
is_deeply [$p->param('bar')], [qw(bas test)], 'right values';
Expand Down

0 comments on commit 48d87df

Please sign in to comment.