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: fix striang (de)concatenation
[dgit.git]
/
i18n-diff-auditor
diff --git
a/i18n-diff-auditor
b/i18n-diff-auditor
index 6f9dab51a53c1c9c189ad5cafe19b02c1a21ac5c..e8914c004e0d20e0de81675d913430d2ac0d924f 100755
(executable)
--- a/
i18n-diff-auditor
+++ b/
i18n-diff-auditor
@@
-107,7
+107,8
@@
our ($ihunkhead, $ihunkend);
our ($ichunkstart, $ichunkend);
our ($before, $after);
our ($ichunkstart, $ichunkend);
our ($before, $after);
-sub is_string ($) { $_[0]{T} =~ m/heredoc|string/; };
+sub is_string ($) { $_[0]{T} =~ m/heredoc|string/; }
+sub is_trans ($) { grep { $_[0]{E} eq $_ } qw(__ f_ i_); }
sub semiparse ($) {
($_) = @_;
sub semiparse ($) {
($_) = @_;
@@
-159,9
+160,10
@@
sub semiparse ($) {
die "cannot tokenise \`$&'";
}
}
die "cannot tokenise \`$&'";
}
}
- for (my $i=
@o-2; $i>0; --$i
) {
+ for (my $i=
0; $i+2 < @o; $i++
) {
next unless $o[$i+1]{E} eq '.';
my @inputs = @o[$i, $i+2];
next unless $o[$i+1]{E} eq '.';
my @inputs = @o[$i, $i+2];
+ #print STDERR Dumper(\@inputs);
next if grep { !is_string($_) } @inputs;
my $q = $inputs[0]{Q};
next if grep { $_->{Q} ne $q } @inputs;
next if grep { !is_string($_) } @inputs;
my $q = $inputs[0]{Q};
next if grep { $_->{Q} ne $q } @inputs;
@@
-172,7
+174,7
@@
sub semiparse ($) {
Q => $q,
};
@o = (@o[0..$i-1], $new, @o[$i+3..$#o]);
Q => $q,
};
@o = (@o[0..$i-1], $new, @o[$i+3..$#o]);
- print STDERR Dumper(\@o);
+ $i--; # counteracts $i++
}
debug $ichunkstart, "semiparsed: ".join ' ', map { $_->{P} } @o;
return @o;
}
debug $ichunkstart, "semiparsed: ".join ' ', map { $_->{P} } @o;
return @o;
@@
-211,14
+213,14
@@
sub analyse_chunk_core () {
if ($y->{E} eq '+'
and @ys >= 3
and $ys[0]{E} eq '('
if ($y->{E} eq '+'
and @ys >= 3
and $ys[0]{E} eq '('
- and
($ys[1]{E} eq '__' or $ys[2]{E} eq 'f_'
)) {
+ and
is_trans($ys[1]
)) {
$next_y->(); # (
$next_y->(); # __ f_
@y_expect_suffix = ')';
}
my $string_changed;
my $ye = $y->{E};
$next_y->(); # (
$next_y->(); # __ f_
@y_expect_suffix = ')';
}
my $string_changed;
my $ye = $y->{E};
- if (
$ye eq '__' or $ye eq 'f_'
) {
+ 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);
$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);
@@
-238,6
+240,10
@@
sub analyse_chunk_core () {
die $string_changed if length $string_changed;
next;
}
die $string_changed if length $string_changed;
next;
}
+ if ($ye eq 'i_') {
+ die $string_changed if length $string_changed;
+ next;
+ }
if ($ye eq 'f_') {
my $fmt = $y->{V};
die "no percent in _f string\n" unless $fmt =~ m{\%};
if ($ye eq 'f_') {
my $fmt = $y->{V};
die "no percent in _f string\n" unless $fmt =~ m{\%};