source: osm/applications/editors/josm/i18n/convstyle.pl@ 31227

Last change on this file since 31227 was 31111, checked in by stoecker, 10 years ago

major speedup of i18n process, add some new features, split core translations into two parts

File size: 1.9 KB
Line 
1#! /usr/bin/perl -w
2
3# Written by Dirk Stöcker <openstreetmap@dstoecker.de>
4# Public domain, no rights reserved.
5
6use strict;
7
8my $rule_cond; # cumulated conditions from current rule
9
10# This is a simple conversion and in no way a complete XML parser
11# but it works with a default Perl installation
12
13# Print a header to write valid Java code. No line break,
14# so that the input and output line numbers will match.
15print "class trans_style { void tr(String s){} void f() {";
16
17while(my $line = <>)
18{
19 chomp($line);
20 print "tr(\"\"); ";
21 if($line =~ /<rules\s+name=(".*?")/)
22 {
23 print "/* mappaint style named $1 */ tr($1);\n";
24 }
25 elsif($line =~ /<rule\s*>/)
26 {
27 $rule_cond = "";
28 print "/* $line */\n";
29 }
30 elsif($line =~ /<condition.*\s+k="([^"]*)"/)
31 {
32 my $cond_k = $1; # according to schema, k is always present
33 my $cond_v = ($line =~ /\s+v="([^"]*)"/) ? $1 : "";
34 my $cond_b = ($line =~ /\s+b="([^"]*)"/) ? $1 : "";
35 print STDERR "$0: Found both v=\"$cond_v\" and b=\"$cond_b\" for k=\"$cond_k\" at line $.\n" if ($cond_v && $cond_b);
36 my $cond = ($cond_v || $cond_b) ? "$cond_k=$cond_v$cond_b" : "$cond_k"; # v and b shouldn't appear both
37 if ($rule_cond)
38 {
39 $rule_cond .= ", " . $cond;
40 }
41 else
42 {
43 $rule_cond = $cond;
44 }
45 print "/* $line */\n";
46 }
47 elsif($line =~ /colour="([^"]+)#/)
48 {
49 if ($line =~ /\s+colour="([^"]+)#/)
50 {
51 my $c = $1;
52 my $co = $1;
53 $c =~ s/[^a-z0-9]+/./g;
54 print "/* color $co (applied for \"$rule_cond\") */ tr(\"$c\");";
55 }
56 if ($line =~ /\s+dashedcolour="([^"]+)#/)
57 {
58 my $c = $1;
59 my $co = $1;
60 $c =~ s/[^a-z0-9]+/./g;
61 print "/* color $co (applied for \"$rule_cond\") */ tr(\"$c\");";
62 }
63 print "\n";
64 }
65 else
66 {
67 $line =~ s/[ \t]+((?:short)?description) *= *"([^"]+)/*\/ \/* $1 *\/ tr("$2"); \/*/g;
68 print "/* $line */\n";
69 }
70}
71
72print "}}\n";
Note: See TracBrowser for help on using the repository browser.