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

Last change on this file since 30496 was 29999, checked in by donvip, 11 years ago

[josm_i18n] fix #josm9112 - fix #josm9156 - i18n patches by AlfonZ

File size: 1.8 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 print "/* $line */\n";
68 }
69}
70
71print "}}\n";
Note: See TracBrowser for help on using the repository browser.