From 133e3be21233547506c2d7342c92ca7fd7b8354a Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 1 Aug 2013 10:58:51 +0200 Subject: [PATCH] =?utf8?q?ClientJS:=20Argumente=20nur=20dann=20s=C3=A4uber?= =?utf8?q?n,=20wenn=20sie=20richtigen=20Typ=20haben?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - Stringifizierung nur für Instanzen von SL::Presenter::EscapedText - Leading whitespace trimming nur für Skalare Hintergrund ist, dass manche Funktionen komplexere Strukturen als Parameter übergeben bekommen, namentlich jstree:create_node, das ein Hash von key/value-Paaren benötigt. Diese dürfen nicht forçiert stringifiziert werden. --- SL/ClientJS.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SL/ClientJS.pm b/SL/ClientJS.pm index 93bbd7482..7d1bb383a 100644 --- a/SL/ClientJS.pm +++ b/SL/ClientJS.pm @@ -132,10 +132,10 @@ sub action { croak "Unsupported jQuery action: $method" unless defined $num_args; croak "Parameter count mismatch for $method(actual: " . scalar(@args) . " wanted: $num_args)" if scalar(@args) != $num_args; - foreach my $idx (1..$num_args) { - # Force flattening from SL::Presenter::EscapedText: "" . $... - $args[$idx - 1] = "" . $args[$idx - 1]; - $args[$idx - 1] =~ s/^\s+//; + foreach my $idx (0..$num_args - 1) { + # Force flattening from SL::Presenter::EscapedText and trim leading whitespace for scalars + $args[$idx] = "" . $args[$idx] if ref($args[$idx]) eq 'SL::Presenter::EscapedText'; + $args[$idx] =~ s/^\s+// if !ref($args[$idx]); } push @{ $self->_actions }, [ $method, @args ]; -- 2.20.1