source: git/lib/launchpad-merge-po @ e4ff92f4

line_contentsstereotravis-osx
Last change on this file since e4ff92f4 was e4ff92f4, checked in by Olly Betts <olly@…>, 5 years ago

lib/launchpad-merge-po: Sync merging at blank lines between
messages.

  • Property mode set to 100755
File size: 1.6 KB
Line 
1#!/usr/bin/perl -w
2use strict;
3
4open O, '<', $ARGV[0] or die $!;
5open N, '<', "lib/survex-$ARGV[0]" or die $!;
6
7my $fuzzy = 0;
8my $diff = 0;
9my ($o, $n);
10while (1) {
11    $o //= <O>;
12    $n //= <N>;
13    defined $o and $o =~ s/[ \t]+$//;
14    defined $n and $n =~ s/[ \t]+$//;
15    if (!defined $n) {
16        last unless defined $o;
17        print '-' if $diff;
18        print $o;
19        $o = undef;
20        next;
21    }
22    if (!defined $o) {
23        print '+' if $diff;
24        print $n;
25        $n = undef;
26        next;
27    }
28
29    if ($o eq "\n" || $n eq "\n") {
30        $fuzzy = 0;
31    }
32
33    if ($o eq $n) {
34        print ' ' if $diff;
35        print $n;
36        $n = $o = undef;
37        next;
38    }
39
40    if ($o eq "#~ $n") {
41        print ' ' if $diff;
42        print $o;
43        $n = $o = undef;
44        next;
45    }
46
47    if ($o =~ /^("PO(?:-Revision|T-Creation)-Date: \d+-\d+-\d+ \d+:\d+):\d\d (.*\n)$/ &&
48        $n eq "$1:00 $2") {
49        print ' ' if $diff;
50        print $o;
51        $n = $o = undef;
52        next;
53    }
54
55    if ($o =~ /^"PO-Revision-Date:/ && $n =~ /^"PO-Revision-Date:/) {
56        print ' ' if $diff;
57        print $o;
58        $n = $o = undef;
59        next;
60    }
61
62    if ($o eq "\n") {
63        print '+' if $diff;
64        print $n;
65        $n = undef;
66        next;
67    }
68
69    if ($n eq "\n") {
70        print '-$o' if $diff;
71        $o = undef;
72        next;
73    }
74
75    if ($o eq "#, fuzzy\n") {
76        print ' ' if $diff;
77        print $o;
78        $o = undef;
79        $fuzzy = 1;
80        next;
81    }
82
83    my $tmp = $o;
84    if ($tmp =~ s/, fuzzy// && $n eq $tmp) {
85        print ' ' if $diff;
86        print $o;
87        $n = $o = undef;
88        $fuzzy = 1;
89        next;
90    }
91
92    if ($fuzzy && $o =~ /^(?:#~ )?msgstr / && $n eq "msgstr \"\"\n") {
93        print ' ' if $diff;
94        print $o;
95        $n = $o = undef;
96        $fuzzy = 0;
97        next;
98    }
99
100    print "-$o" if $diff;
101    print '+' if $diff;
102    print $n;
103    $n = $o = undef;
104}
Note: See TracBrowser for help on using the repository browser.