Merge branch 'pr/154' into release-candidates/rc-5.90116
Jay Hannah [Tue, 16 Jan 2018 22:43:48 +0000 (16:43 -0600)]
Conflicts jhannah resolved manually:
  Makefile.PL
  lib/Catalyst.pm

1  2 
Makefile.PL
lib/Catalyst.pm

diff --combined Makefile.PL
@@@ -26,7 -26,7 +26,7 @@@ author 'Sebastian Riedel <sri@cpan.org>
  authority('cpan:MSTROUT');
  all_from 'lib/Catalyst/Runtime.pm';
  
- requires 'List::Util' => '1.45';
+ requires 'List::Util' => '1.45'; # for uniq()
  requires 'namespace::autoclean' => '0.28';
  requires 'namespace::clean' => '0.23';
  requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00903';
@@@ -34,7 -34,7 +34,7 @@@ requires 'Class::Load' => '0.12'
  requires 'Data::OptList';
  requires 'Moose' => '1.03';
  requires 'MooseX::MethodAttributes::Role::AttrContainer::Inheritable' => '0.24';
 -requires 'MooseX::Role::WithOverloading' => '0.09';
 +requires 'MooseX::Role::WithOverloading' => '0.09' unless can_use('Moose', '2.1300');
  requires 'Carp' => '1.25';
  requires 'Class::C3::Adopt::NEXT' => '0.07';
  requires 'CGI::Simple::Cookie' => '1.109';
@@@ -120,6 -120,7 +120,6 @@@ author_requires
    @author_requires,
    map {; $_ => 0 } qw(
    File::Copy::Recursive
 -  Test::Without::Module
    Starman
    MooseX::Daemonize
    Test::NoTabs
@@@ -141,7 -142,6 +141,7 @@@ resources
      'license',    => 'http://dev.perl.org/licenses/',
      'homepage',   => 'http://dev.catalyst.perl.org/',
      # r/w: catagits@git.shadowcat.co.uk:Catalyst-Runtime.git
 +    # web: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits/Catalyst-Runtime.git;a=summary
      'repository', => 'git://git.shadowcat.co.uk/catagits/Catalyst-Runtime.git',
  );
  
diff --combined lib/Catalyst.pm
@@@ -27,6 -27,7 +27,7 @@@ use HTML::Entities
  use Tree::Simple qw/use_weak_refs/;
  use Tree::Simple::Visitor::FindByUID;
  use Class::C3::Adopt::NEXT;
+ use List::Util qw/uniq/;
  use attributes;
  use String::RewritePrefix;
  use Catalyst::EngineLoader;
@@@ -204,7 -205,7 +205,7 @@@ sub composed_stats_class 
  __PACKAGE__->_encode_check(Encode::FB_CROAK | Encode::LEAVE_SRC);
  
  # Remember to update this in Catalyst::Runtime as well!
 -our $VERSION = '5.90114';
 +our $VERSION = '5.90115';
  $VERSION = eval $VERSION if $VERSION =~ /_/; # numify for warning-free dev releases
  
  sub import {
@@@ -246,6 -247,11 +247,6 @@@ sub _application { $_[0] 
  
  Catalyst - The Elegant MVC Web Application Framework
  
 -=for html
 -<a href="https://badge.fury.io/pl/Catalyst-Runtime"><img src="https://badge.fury.io/pl/Catalyst-Runtime.svg" alt="CPAN version" height="18"></a>
 -<a href="https://travis-ci.org/perl-catalyst/catalyst-runtime/"><img src="https://api.travis-ci.org/perl-catalyst/catalyst-runtime.png" alt="Catalyst></a>
 -<a href="http://cpants.cpanauthors.org/dist/Catalyst-Runtime"><img src="http://cpants.cpanauthors.org/dist/Catalyst-Runtime.png" alt='Kwalitee Score' /></a>
 -
  =head1 SYNOPSIS
  
  See the L<Catalyst::Manual> distribution for comprehensive
@@@ -469,7 -475,7 +470,7 @@@ or stash it like so
  
  and access it from the stash.
  
 -Keep in mind that the C<end> method used is that of the caller action. So a C<$c-E<gt>detach> inside a forwarded action would run the C<end> method from the original action requested.
 +Keep in mind that the C<end> method used is that of the caller action. So a C<< $c->detach >> inside a forwarded action would run the C<end> method from the original action requested.
  
  =cut
  
@@@ -1700,20 -1706,23 +1701,20 @@@ sub uri_for 
        # somewhat lifted from URI::_query's query_form
        $query = '?'.join('&', map {
            my $val = $params->{$_};
 -          #s/([;\/?:@&=+,\$\[\]%])/$URI::Escape::escapes{$1}/go; ## Commented out because seems to lead to double encoding - JNAP
 -          s/ /+/g;
 -          my $key = $_;
 +          my $key = encode_utf8($_);
 +          # using the URI::Escape pattern here so utf8 chars survive
 +          $key =~ s/([^A-Za-z0-9\-_.!~*'() ])/$URI::Escape::escapes{$1}/go;
 +          $key =~ s/ /+/g;
 +
            $val = '' unless defined $val;
            (map {
 -              my $param = "$_";
 -              $param = encode_utf8($param);
 +              my $param = encode_utf8($_);
                # using the URI::Escape pattern here so utf8 chars survive
                $param =~ s/([^A-Za-z0-9\-_.!~*'() ])/$URI::Escape::escapes{$1}/go;
                $param =~ s/ /+/g;
  
 -              $key = encode_utf8($key);
 -              # using the URI::Escape pattern here so utf8 chars survive
 -              $key =~ s/([^A-Za-z0-9\-_.!~*'() ])/$URI::Escape::escapes{$1}/go;
 -              $key =~ s/ /+/g;
 -
 -              "${key}=$param"; } ( ref $val eq 'ARRAY' ? @$val : $val ));
 +              "${key}=$param";
 +          } ( ref $val eq 'ARRAY' ? @$val : $val ));
        } @keys);
      }
  
@@@ -2313,10 -2322,6 +2314,10 @@@ sub finalize_encoding 
        (defined($res->body)) and
        (ref(\$res->body) eq 'SCALAR')
      ) {
 +        # if you are finding yourself here and your body is already encoded correctly
 +        # and you want to turn this off, use $c->clear_encoding to prevent encoding
 +        # at this step, or set encoding to undef in the config to do so for the whole
 +        # application.  See the ENCODING documentaiton for better notes.
          $c->res->body( $c->encoding->encode( $c->res->body, $c->_encode_check ) );
  
          # Set the charset if necessary.  This might be a bit bonkers since encodable response
@@@ -2736,16 -2741,9 +2737,16 @@@ sub log_request_parameters 
          next if ! keys %$params;
          my $t = Text::SimpleTable->new( [ 35, 'Parameter' ], [ $column_width, 'Value' ] );
          for my $key ( sort keys %$params ) {
 -            my $param = $params->{$key};
 -            my $value = defined($param) ? $param : '';
 -            $t->row( $key, ref $value eq 'ARRAY' ? ( join ', ', @$value ) : $value );
 +            my @values = ();
 +            if(ref $params eq 'Hash::MultiValue') {
 +                @values = $params->get_all($key);
 +            } else {
 +                my $param = $params->{$key};
 +                if( defined($param) ) {
 +                    @values = ref $param eq 'ARRAY' ? @$param : $param;
 +                }
 +            }
 +            $t->row( $key.( scalar @values > 1 ? ' [multiple]' : ''), join(', ', @values) );
          }
          $c->log->debug( ucfirst($type) . " Parameters are:\n" . $t->draw );
      }
@@@ -4302,20 -4300,18 +4303,20 @@@ value to undef
  
  C<abort_chain_on_error_fix>
  
 -When there is an error in an action chain, the default behavior is to continue
 -processing the remaining actions and then catch the error upon chain end.  This
 -can lead to running actions when the application is in an unexpected state.  If
 -you have this issue, setting this config value to true will promptly exit a
 -chain when there is an error raised in any action (thus terminating the chain
 -early.)
 +Defaults to true.
 +
 +When there is an error in an action chain, the default behavior is to
 +abort the processing of the remaining actions to avoid running them
 +when the application is in an unexpected state.
 +
 +Before version 5.90070, the default used to be false. To keep the old
 +behaviour, you can explicitly set the value to false. E.g.
  
 -use like:
 +    __PACKAGE__->config(abort_chain_on_error_fix => 0);
  
 -    __PACKAGE__->config(abort_chain_on_error_fix => 1);
 +If this setting is set to false, then the remaining actions are
 +performed and the error is caught at the end of the chain.
  
 -In the future this might become the default behavior.
  
  =item *
  
@@@ -4769,11 -4765,6 +4770,11 @@@ the encoding configuration to undef
  
  This is recommended for temporary backwards compatibility only.
  
 +To turn it off for a single request use the L<clear_encoding>
 +method to turn off encoding for this request.  This can be useful
 +when you are setting the body to be an arbitrary block of bytes,
 +especially if that block happens to be a block of UTF8 text.
 +
  Encoding is automatically applied when the content-type is set to
  a type that can be encoded.  Currently we encode when the content type
  matches the following regular expression:
@@@ -4896,7 -4887,7 +4897,7 @@@ andrewalker: André Walker <andre@cpan.
  
  Andrew Bramble
  
 -Andrew Ford E<lt>A.Ford@ford-mason.co.ukE<gt>
 +Andrew Ford <A.Ford@ford-mason.co.uk>
  
  Andrew Ruthven
  
@@@ -4910,19 -4901,19 +4911,19 @@@ Caelum: Rafael Kitover <rkitover@io.com
  
  chansen: Christian Hansen
  
 -Chase Venters C<chase.venters@gmail.com>
 +Chase Venters <chase.venters@gmail.com>
  
  chicks: Christopher Hicks
  
 -Chisel Wright C<pause@herlpacker.co.uk>
 +Chisel Wright <pause@herlpacker.co.uk>
  
 -Danijel Milicevic C<me@danijel.de>
 +Danijel Milicevic <me@danijel.de>
  
  davewood: David Schmidt <davewood@cpan.org>
  
 -David Kamholz E<lt>dkamholz@cpan.orgE<gt>
 +David Kamholz <dkamholz@cpan.org>
  
 -David Naughton, C<naughton@umn.edu>
 +David Naughton <naughton@umn.edu>
  
  David E. Wheeler
  
@@@ -4944,7 -4935,7 +4945,7 @@@ gabb: Danijel Milicevi
  
  Gary Ashton Jones
  
 -Gavin Henry C<ghenry@perl.me.uk>
 +Gavin Henry <ghenry@perl.me.uk>
  
  Geoff Richards
  
@@@ -4956,7 -4947,7 +4957,7 @@@ ilmari: Dagfinn Ilmari MannsÃ¥ker <ilma
  
  jcamacho: Juan Camacho
  
 -jester: Jesse Sheidlower C<jester@panix.com>
 +jester: Jesse Sheidlower <jester@panix.com>
  
  jhannah: Jay Hannah <jay@jays.net>
  
@@@ -4966,9 -4957,9 +4967,9 @@@ Johan Lindstro
  
  jon: Jon Schutz <jjschutz@cpan.org>
  
 -Jonathan Rockway C<< <jrockway@cpan.org> >>
 +Jonathan Rockway <jrockway@cpan.org>
  
 -Kieren Diment C<kd@totaldatasolution.com>
 +Kieren Diment <kd@totaldatasolution.com>
  
  konobi: Scott McWhirter <konobi@cpan.org>
  
@@@ -5004,9 -4995,7 +5005,9 @@@ rafl: Florian Ragwitz <rafl@debian.org
  
  random: Roland Lammel <lammel@cpan.org>
  
 -Robert Sedlacek C<< <rs@474.at> >>
 +revmischa: Mischa Spiegelmock <revmischa@cpan.org>
 +
 +Robert Sedlacek <rs@474.at>
  
  SpiceMan: Marcel Montes
  
@@@ -5020,17 -5009,17 +5021,17 @@@ Ulf Edvinsso
  
  vanstyn: Henry Van Styn <vanstyn@cpan.org>
  
 -Viljo Marrandi C<vilts@yahoo.com>
 +Viljo Marrandi <vilts@yahoo.com>
  
 -Will Hawes C<info@whawes.co.uk>
 +Will Hawes <info@whawes.co.uk>
  
  willert: Sebastian Willert <willert@cpan.org>
  
  wreis: Wallace Reis <wreis@cpan.org>
  
 -Yuval Kogman, C<nothingmuch@woobling.org>
 +Yuval Kogman <nothingmuch@woobling.org>
  
 -rainboxx: Matthias Dietrich, C<perl@rainboxx.de>
 +rainboxx: Matthias Dietrich <perl@rainboxx.de>
  
  dd070: Dhaval Dhanani <dhaval070@gmail.com>