chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
i18n: i18n-diff-auditor: bugfixes
[dgit.git]
/
i18n-diff-auditor
diff --git
a/i18n-diff-auditor
b/i18n-diff-auditor
index 8ec5e9f436ab3b5831d376096b76e49f6adccc8e..61d7330f21d03c135355ef157b885e6b08303a71 100755
(executable)
--- a/
i18n-diff-auditor
+++ b/
i18n-diff-auditor
@@
-132,7
+132,7
@@
sub semiparse ($) {
( .* \n )
( (?: (?! $d) .* \n )* )
$d \n
( .* \n )
( (?: (?! $d) .* \n )* )
$d \n
- }{ $1 }x or die "missing end of here doc $d\n";
+ }{ $1 }x
e
or die "missing end of here doc $d\n";
$o[$#o]{V} = $2;
} elsif (s{^ (["'])( (?: [^\\'"]
| \\ [^"']
$o[$#o]{V} = $2;
} elsif (s{^ (["'])( (?: [^\\'"]
| \\ [^"']
@@
-144,9
+144,9
@@
sub semiparse ($) {
Q => $q, V => $v};
} elsif (s{^$perlop_re|^\;}{}) {
push @o, { T => 'op', E => $&, P => $& };
Q => $q, V => $v};
} elsif (s{^$perlop_re|^\;}{}) {
push @o, { T => 'op', E => $&, P => $& };
- } elsif (s/[[{(]//) {
+ } elsif (s/
^
[[{(]//) {
push @o, { T => 'bra', E => $&, P => $& };
push @o, { T => 'bra', E => $&, P => $& };
- } elsif (s/[]})]//) {
+ } elsif (s/
^
[]})]//) {
push @o, { T => 'ket', E => $&, P => $& };
} elsif (s/^( [\$\@\%] )( \{ )//x) {
push @o, { T => 'deref', E => $1, P => $1 },
push @o, { T => 'ket', E => $&, P => $& };
} elsif (s/^( [\$\@\%] )( \{ )//x) {
push @o, { T => 'deref', E => $1, P => $1 },
@@
-210,12
+210,22
@@
sub analyse_chunk_core () {
$next_x->();
$next_y->();
next if $x->{E} eq $y->{E};
$next_x->();
$next_y->();
next if $x->{E} eq $y->{E};
+ next if $x->{E} eq 'sprintf' and $y->{E} eq 'f_';
+ next if $x->{E} eq 'die' and $y->{E} eq 'confess';
if ($y->{E} eq '+'
and @ys >= 3
and $ys[0]{E} eq '('
and is_trans($ys[1])) {
$next_y->(); # (
if ($y->{E} eq '+'
and @ys >= 3
and $ys[0]{E} eq '('
and is_trans($ys[1])) {
$next_y->(); # (
- $next_y->(); # __ f_
+ $next_y->(); # __ f_ i_
+ @y_expect_suffix = ')';
+ } elsif ($y->{E} eq '('
+ and @ys > 2
+ and is_trans($ys[0])
+ and @analysed_y
+ and (grep { $_ eq $analysed_y[-1] } (qw( => [ { ? : . ),
+ '(', ',') )) {
+ $next_y->(); # __ f_ i_
@y_expect_suffix = ')';
}
my $string_changed;
@y_expect_suffix = ')';
}
my $string_changed;
@@
-223,7
+233,7
@@
sub analyse_chunk_core () {
if (is_trans($y)) {
$next_y->();
die "__ on non-string $y->{P}\n" unless is_string($y);
if (is_trans($y)) {
$next_y->();
die "__ on non-string $y->{P}\n" unless is_string($y);
- die "__ on was non-string $
y
->{P}\n" unless is_string($x);
+ die "__ on was non-string $
x
->{P}\n" unless is_string($x);
if ($y->{Q} ne "'") {
die "var subst in new string\n"
if $y->{V} =~ m{(?<!\\) [\$\@]};
if ($y->{Q} ne "'") {
die "var subst in new string\n"
if $y->{V} =~ m{(?<!\\) [\$\@]};
@@
-265,6
+275,7
@@
sub analyse_chunk_core () {
if ($fmt !~ m{\%[^\%]}) {
$exactly->($fmt, '(tail)');
$fmt = '';
if ($fmt !~ m{\%[^\%]}) {
$exactly->($fmt, '(tail)');
$fmt = '';
+ die "text deleted from end of string\n" if length $xs;
last;
}
$exactly->($`, '(literal)');
last;
}
$exactly->($`, '(literal)');
@@
-307,7
+318,11
@@
sub analyse_chunk_core () {
pop @analysed_y;
last;
}
pop @analysed_y;
last;
}
- $xs =~ s{^\s+}{};
+ $xs =~ s{^\s+}{} if $bras;
+ if (is_string($y) and $y->{Q} eq '"') {
+ $exactly->($y->{V}, $y->{P});
+ next;
+ }
$exactly->($y->{E}, $y->{P});
if ($y->{T} eq 'bra' or $y->{E} eq '?') {
$bras++;
$exactly->($y->{E}, $y->{P});
if ($y->{T} eq 'bra' or $y->{E} eq '?') {
$bras++;