View | Details | Raw Unified | Return to bug 12221
Collapse All | Expand All

(-)a/misc/translator/TmplTokenizer.pm (-2 / +57 lines)
Lines 303-308 sub _parametrize_internal{ Link Here
303
    return $t;
303
    return $t;
304
}
304
}
305
305
306
sub trimmable_string {
307
    my $s = shift;
308
309
    # Remove TT start and end tag
310
    $s =~ s/^\[%[-+]?\s+//;
311
    $s =~ s/\s+[-+]?%\]$//;
312
313
    return 1 if ($s =~ /^#/); # comment
314
315
    # semicolon or newline is a TT directive separator.
316
    if ($s =~ /[;\n]/) {
317
        my @parts = split(/[;\n]/, $s);
318
        foreach my $tmps (@parts) {
319
            return 0 if (!trimmable_string($tmps));
320
        }
321
        return 1;
322
    }
323
324
    # trim away spaces
325
    $s =~ s/^\s+//;
326
    $s =~ s/\s+$//;
327
328
    if ($s =~ /^IF / ||
329
        $s =~ /^ELSIF / ||
330
        $s =~ /^ELSE\b/ ||
331
        $s =~ /^END\b/ ||
332
        $s =~ /^INCLUDE / ||
333
        $s =~ /^PROCESS / ||
334
        $s =~ /^BLOCK / ||
335
        $s =~ /^SWITCH / ||
336
        $s =~ /^CASE\b/ ||
337
        $s =~ /^SET / ||
338
        $s =~ /^FILTER / ||
339
        $s =~ /^FOREACH / ||
340
        $s =~ /^FOR / ||
341
        $s =~ /^USE / ||
342
        $s =~ /^UNLESS / ||
343
        $s =~ /^\S+ *= *\S/ # variable = value
344
        ) {
345
        return 1;
346
    }
347
    return 0;
348
}
349
350
sub trimmable {
351
    my $t = shift;
352
    return 0 if (!$t || $t->type != C4::TmplTokenType::DIRECTIVE);
353
    return trimmable_string($t->string);
354
}
355
306
sub next_token {
356
sub next_token {
307
    my $self = shift;
357
    my $self = shift;
308
    my $next;
358
    my $next;
Lines 326-332 sub next_token { Link Here
326
        } 
376
        } 
327
#        elsif( $next->type == C4::TmplTokenType::DIRECTIVE && $next->string =~ m/\[%\s*\w+\s*%\]/ ){
377
#        elsif( $next->type == C4::TmplTokenType::DIRECTIVE && $next->string =~ m/\[%\s*\w+\s*%\]/ ){
328
        elsif( $next->type == C4::TmplTokenType::DIRECTIVE ){
378
        elsif( $next->type == C4::TmplTokenType::DIRECTIVE ){
329
            push @parts, $next;
379
            if (trimmable($next)) {
380
                return $next unless @parts;
381
                $self->{_parser}->unshift_token($next);
382
                return $self->_parametrize_internal(@parts);
383
            } else {
384
                push @parts, $next;
385
            }
330
        } 
386
        } 
331
        elsif ( $next->type == C4::TmplTokenType::CDATA){
387
        elsif ( $next->type == C4::TmplTokenType::CDATA){
332
            $self->_set_js_mode(1);
388
            $self->_set_js_mode(1);
333
- 

Return to bug 12221