QGIS/scripts/qgm2cpp.pl
lbartoletti 124e26815d Standardize shebangs (was Usr bin env) (#6229)
* Use portable /usr/bin/env/{perl,python} instead of /usr/bin/{perl,python}

* fix perl;add bash

* Fix indentation using modified scripts

* Revert "fix perl;add bash"

This reverts commit be8b9113c25f7c2fb9c8c9bad556fbca2f0c0ba2.

* python3 everywhere

* more bash

* rebase
change perl

* Linux perl; missing from last PR

* fix doxygen_space

* Use portable /usr/bin/env/{perl,python} instead of /usr/bin/{perl,python}

* fix perl;add bash

* Fix indentation using modified scripts

* Revert "fix perl;add bash"

This reverts commit be8b9113c25f7c2fb9c8c9bad556fbca2f0c0ba2.

* python3 everywhere

* more bash

* rebase
change perl

* fix doxygen_space
2018-02-05 03:38:02 -09:00

76 lines
2.2 KiB
Perl

#!/usr/bin/env perl
###########################################################################
# qgm2cpp.pl
# ---------------------
# begin : December 2009
# copyright : (C) 2009 by Juergen E. Fischer
# email : jef at norbit dot de
###########################################################################
# #
# 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 2 of the License, or #
# (at your option) any later version. #
# #
###########################################################################
use XML::Simple;
use Data::Dumper;
print <<EOF;
/*
This is NOT a proper c++ source code. This file is only designed to be caught
by qmake and included in lupdate. It contains all translateable strings collected
by pylupdate5.
*/
EOF
my %labels;
my $file;
sub parse {
foreach my $a (@_) {
if( ref($a) eq "ARRAY" ) {
foreach my $b ( @$a ) {
parse($b);
}
} elsif( ref($a) eq "HASH" ) {
foreach my $b ( keys %$a ) {
if( $b eq "label" ) {
my $label = $a->{$b};
die "expected string" unless ref($label) eq "";
print STDERR "warning[$file]: '$label' should start with a uppercase character or digit and not start or end with whitespaces"
if $label =~ /^\s+/ || $label =~ /\s+$/ || $label !~ /^[A-Z0-9(]/;
$label =~ s/^\s+//;
$label =~ s/\s+$//;
$label = ucfirst $label;
$labels{$label} = 1;
} else {
parse($a->{$b});
}
}
# } elsif(ref($a) eq "") {
# warn "found: " . $a;
# } else {
# warn "found: " . ref($a) . " " . Dumper($a);
}
}
}
open I, "find src/plugins/grass -name '*.qgm' -o -name '*.qgc'|";
while($file = <I>) {
#print STDERR "$file\n";
chop $file;
parse XMLin($file, ForceArray=>1);
#print STDERR "$file DONE\n";
}
close I;
foreach (sort keys %labels) {
s/\\/\\\\/g;
s/"/\\"/g;
s/\n/\\n/g;
print "translate( \"grasslabel\", \"$_\" );\n";
}