On Wed, Oct 09, 2019 at 12:37:18PM +0100, Daniel P. Berrangé wrote:
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. Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> --- Makefile.am | 2 +- build-aux/minimize-po.pl | 37 ------------------------- po/Makefile.am | 2 +- scripts/minimize-po.py | 58 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 39 deletions(-) delete mode 100755 build-aux/minimize-po.pl create mode 100755 scripts/minimize-po.py diff --git a/Makefile.am b/Makefile.am index 9c16fa72ec..02506f2183 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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/useless-if-before-free \ diff --git a/po/Makefile.am b/po/Makefile.am index da117edbd5..b0e2c15d44 100644 --- a/po/Makefile.am +++ b/po/Makefile.am @@ -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 diff --git a/scripts/minimize-po.py b/scripts/minimize-po.py new file mode 100755 index 0000000000..61454a5eea --- /dev/null +++ b/scripts/minimize-po.py @@ -0,0 +1,58 @@ +#!/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: + line = line.rstrip("\n") +
You can get rid of the stripping (and creating an extra copy) by using
+ if line == "":
line.isspace()
+ if not empty and not unused and not fuzzy: + for b in block: + print(b)
print(b, end='')
+ + block = [] + msgstr = False + fuzzy = False + block.append(line) + else: + if line.startswith("msgstr"): + msgstr = True + empty = True + + if line[0] == '#' and line.find("fuzzy") != -1:
and "fuzzy" in line If you don't care about the exact position, it's faster and more readable.
+ fuzzy = True + if line.startswith("#~ msgstr"): + unused = True + if msgstr and re.search(r'''".+"''', line):
Why the triple quotes for a single-line string?
+ empty = False + + block.append(line) + +if not empty and not unused and not fuzzy: + for b in block: + print(b)
print(b, end='') if you go with storing unstripped lines Reviewed-by: Ján Tomko <jtomko@xxxxxxxxxx> Jano
Attachment:
signature.asc
Description: PGP signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list