mirror of https://gitee.com/openkylin/libvirt.git
build-aux: rewrite po file minimizer in Python
As part of an goal to eliminate Perl from libvirt build tools, rewrite the minimize-po.pl tool in Python. This was a straight conversion, manually going line-by-line to change the syntax from Perl to Python. Thus the overall structure of the file and approach is the same. Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
17bbdef5cb
commit
b2c2a3ae91
|
@ -48,7 +48,7 @@ EXTRA_DIST = \
|
|||
scripts/augeas-gentest.py \
|
||||
build-aux/check-spacing.pl \
|
||||
build-aux/header-ifdef.pl \
|
||||
build-aux/minimize-po.pl \
|
||||
scripts/minimize-po.py \
|
||||
build-aux/mock-noinline.pl \
|
||||
build-aux/prohibit-duplicate-header.pl \
|
||||
build-aux/syntax-check.mk \
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
my @block;
|
||||
my $msgstr = 0;
|
||||
my $empty = 0;
|
||||
my $unused = 0;
|
||||
my $fuzzy = 0;
|
||||
while (<>) {
|
||||
if (/^$/) {
|
||||
if (!$empty && !$unused && !$fuzzy) {
|
||||
print @block;
|
||||
}
|
||||
@block = ();
|
||||
$msgstr = 0;
|
||||
$fuzzy = 0;
|
||||
push @block, $_;
|
||||
} else {
|
||||
if (/^msgstr/) {
|
||||
$msgstr = 1;
|
||||
$empty = 1;
|
||||
}
|
||||
if (/^#.*fuzzy/) {
|
||||
$fuzzy = 1;
|
||||
}
|
||||
if (/^#~ msgstr/) {
|
||||
$unused = 1;
|
||||
}
|
||||
if ($msgstr && /".+"/) {
|
||||
$empty = 0;
|
||||
}
|
||||
push @block, $_;
|
||||
}
|
||||
}
|
||||
|
||||
if (@block && !$empty && !$unused) {
|
||||
print @block;
|
||||
}
|
|
@ -58,7 +58,7 @@ update-mini-po: $(POTFILE)
|
|||
$(MSGMERGE) --no-location --no-fuzzy-matching --sort-output \
|
||||
$$lang.po $(POTFILE) | \
|
||||
$(SED) $(SED_PO_FIXUP_ARGS) | \
|
||||
$(PERL) $(top_srcdir)/build-aux/minimize-po.pl > \
|
||||
$(RUNUTF8) $(PYTHON) $(top_srcdir)/scripts/minimize-po.py > \
|
||||
$(srcdir)/$$lang.mini.po ; \
|
||||
done
|
||||
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright (C) 2018-2019 Red Hat, Inc.
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import re
|
||||
import sys
|
||||
|
||||
block = []
|
||||
msgstr = False
|
||||
empty = False
|
||||
unused = False
|
||||
fuzzy = False
|
||||
|
||||
for line in sys.stdin:
|
||||
if line.isspace():
|
||||
if not empty and not unused and not fuzzy:
|
||||
for b in block:
|
||||
print(b, end='')
|
||||
|
||||
block = []
|
||||
msgstr = False
|
||||
fuzzy = False
|
||||
block.append(line)
|
||||
else:
|
||||
if line.startswith("msgstr"):
|
||||
msgstr = True
|
||||
empty = True
|
||||
|
||||
if line[0] == '#' and "fuzzy" in line:
|
||||
fuzzy = True
|
||||
if line.startswith("#~ msgstr"):
|
||||
unused = True
|
||||
if msgstr and re.search(r'".+"', line):
|
||||
empty = False
|
||||
|
||||
block.append(line)
|
||||
|
||||
if not empty and not unused and not fuzzy:
|
||||
for b in block:
|
||||
print(b, end='')
|
Loading…
Reference in New Issue