| 1 | #! /usr/bin/perl -w
|
|---|
| 2 |
|
|---|
| 3 | # Written by Dirk Stöcker <openstreetmap@dstoecker.de>
|
|---|
| 4 | # Public domain, no rights reserved.
|
|---|
| 5 |
|
|---|
| 6 | use strict;
|
|---|
| 7 |
|
|---|
| 8 | my $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.
|
|---|
| 15 | print "class trans_style { void tr(String s){} void f() {";
|
|---|
| 16 |
|
|---|
| 17 | while(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 |
|
|---|
| 71 | print "}}\n";
|
|---|