X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=i18n-diff-auditor;h=a03f0b01ea1b41f03f06c3ddf451191a743564de;hp=363103fccf01e7a4f7bfc47894330d6c56fe2066;hb=b093090b8d5a24cbc40a9e9b517f3f55a2144d47;hpb=6090adb68f0ab2b79adba51212bfe7b2dff0e6df diff --git a/i18n-diff-auditor b/i18n-diff-auditor index 363103fc..a03f0b01 100755 --- a/i18n-diff-auditor +++ b/i18n-diff-auditor @@ -4,6 +4,37 @@ # Copyright (C)2018 Ian Jackson # GPLv3+, NO WARRANTY, see below. # +# +# Usage: +# something like this +# git-log -n1 -p | ./i18n-diff-auditor -D 2>&1 |less -j10 +/'^!.*' +# +# -D is for debug. Currently only one level. +# +# Output is the relevant diff hunks, with each line prepended with +# space for ok lines and ! for questionable ones, and with relevant +# diff lines prepended with lines starting !! (and lines starting # +# for debug output), so ovrall: +# +# !! reasoning for subsequent questionable diff line(s) +# !+ diff line found to be questionable +# !- diff line found to be questionable +# @@@ etc. diff furniture +# + diff line checked and ok +# - diff line checked and ok +# # debug output (normally precedes relevant output) +# +# Changes are generally marked as ok if they correspond to a known +# intended code change pattern. (That includes changing error calls +# to different error calls.) If they don't correspond to any known +# pattern, they are "questionable" and the first thing that doesn't +# match the most common pattern is reported. +# +# Might be useful for projects other than dgit, provided it uses +# the same gettext aliases (__ f_ i_) and similar error calls +# (die, confess, fail). +# +# # 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 # the Free Software Foundation, either version 3 of the License, or @@ -189,6 +220,7 @@ sub semiparse ($) { push @o, { T => 'specvar', E => $&, P => $& }; } elsif (!length) { last; + } elsif (s{^\#.*\n}{}) { } else { m{^.{0,10}}; die "cannot tokenise \`$&'"; @@ -220,8 +252,8 @@ our @analysed_x; our @analysed_y; sub analyse_chunk_core () { + $before //= ''; die "plain deletion\n" unless defined $after; - die "plain insertion\n" unless defined $before; my @xs = semiparse $before; my @ys = semiparse $after; @analysed_x = @analysed_y = ();