Fix eat_code_line in Perl version

databind
Vitaliy Filippov 2015-02-17 16:06:54 +03:00
parent 3fb510b015
commit cc4434a2fe
2 changed files with 5 additions and 7 deletions

View File

@ -9,7 +9,7 @@
# Homepage: http://yourcmc.ru/wiki/VMX::Template # Homepage: http://yourcmc.ru/wiki/VMX::Template
# License: GNU GPLv3 or later # License: GNU GPLv3 or later
# Author: Vitaliy Filippov, 2006-2015 # Author: Vitaliy Filippov, 2006-2015
# Version: V3 (LALR), 2015-01-09 # Version: V3 (LALR), 2015-02-17
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -106,6 +106,7 @@ sub read_token
} }
if ($self->{in_code} <= 0 && $self->{in_subst} <= 0) if ($self->{in_code} <= 0 && $self->{in_subst} <= 0)
{ {
my $was_code = 1;
my $r; my $r;
my $code_pos = index($self->{code}, $self->{options}->{begin_code}, $self->{skip_chars}); my $code_pos = index($self->{code}, $self->{options}->{begin_code}, $self->{skip_chars});
my $subst_pos = $self->{options}->{begin_subst} ne '' ? index($self->{code}, $self->{options}->{begin_subst}, $self->{skip_chars}) : -1; my $subst_pos = $self->{options}->{begin_subst} ne '' ? index($self->{code}, $self->{options}->{begin_subst}, $self->{skip_chars}) : -1;
@ -124,7 +125,7 @@ sub read_token
my $str = $self->eat($code_pos); my $str = $self->eat($code_pos);
if ($self->{options}->{eat_code_line}) if ($self->{options}->{eat_code_line})
{ {
$str =~ s/\n[ \t]*$/\n/s; $was_code ? $str =~ s/\n[ \t]*$//s : $str =~ s/\n[ \t]*$/\n/s;
} }
$r = [ 'literal', [ "'".addcslashes($str, "'")."'", 1 ] ]; $r = [ 'literal', [ "'".addcslashes($str, "'")."'", 1 ] ];
} }
@ -150,6 +151,7 @@ sub read_token
$self->eat(length $self->{options}->{begin_code}); $self->eat(length $self->{options}->{begin_code});
$self->{in_code} = 1; $self->{in_code} = 1;
} }
$was_code = 1;
} }
else else
{ {
@ -166,6 +168,7 @@ sub read_token
$self->eat(length $self->{options}->{begin_subst}); $self->eat(length $self->{options}->{begin_subst});
$self->{in_subst} = 1; $self->{in_subst} = 1;
} }
$was_code = 0;
} }
return @$r; return @$r;
} }
@ -221,11 +224,6 @@ sub read_token
$self->{in_code}-- if $t eq $self->{options}->{end_code}; $self->{in_code}-- if $t eq $self->{options}->{end_code};
if (!$self->{in_code}) if (!$self->{in_code})
{ {
if ($self->{options}->{eat_code_line} &&
$self->{code} =~ /^([ \t\r]+\n\r?)/so)
{
$self->eat(length $1);
}
return ('-->', $t); return ('-->', $t);
} }
} }