Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 133e3be2

Von Moritz Bunkus vor mehr als 11 Jahren hinzugefügt

  • ID 133e3be21233547506c2d7342c92ca7fd7b8354a
  • Vorgänger b023a2ad
  • Nachfolger a88e5449

ClientJS: Argumente nur dann säubern, wenn sie richtigen Typ haben

- 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.

Unterschiede anzeigen:

SL/ClientJS.pm
132 132
  croak "Unsupported jQuery action: $method"                                                    unless defined $num_args;
133 133
  croak "Parameter count mismatch for $method(actual: " . scalar(@args) . " wanted: $num_args)" if     scalar(@args) != $num_args;
134 134

  
135
  foreach my $idx (1..$num_args) {
136
    # Force flattening from SL::Presenter::EscapedText: "" . $...
137
    $args[$idx - 1] =  "" . $args[$idx - 1];
138
    $args[$idx - 1] =~ s/^\s+//;
135
  foreach my $idx (0..$num_args - 1) {
136
    # Force flattening from SL::Presenter::EscapedText and trim leading whitespace for scalars
137
    $args[$idx] =  "" . $args[$idx] if  ref($args[$idx]) eq 'SL::Presenter::EscapedText';
138
    $args[$idx] =~ s/^\s+//         if !ref($args[$idx]);
139 139
  }
140 140

  
141 141
  push @{ $self->_actions }, [ $method, @args ];

Auch abrufbar als: Unified diff