source: josm/trunk/resources/data/validator/multiple.mapcss@ 18132

Last change on this file since 18132 was 18132, checked in by Don-vip, 3 years ago

fix #21192 - Warn about multiple access values with *:lanes and/or :forward/backward (patch by skyper)

  • Property svn:eol-style set to native
File size: 9.6 KB
Line 
1/* #9757, #10869, #18266 */
2*["telecom:medium" =~ /.+;(.+)?/],
3*["addr:street" =~ /.+;(.+)?/],
4*[highway =~ /.+;(.+)?/],
5*[lanes =~ /.+;(.+)?/],
6*[maxspeed =~ /.+;(.+)?/],
7*[name =~ /.+;(.+)?/],
8*[surface =~ /.+;(.+)?/],
9*[water =~ /.+;(.+)?/] {
10 throwWarning: tr("{0} with multiple values", "{0.key}");
11}
12
13/* Multiple access values, #19419 */
14node[/^(amenity|barrier|building(:part)?|entrance|(high|rail|water)way|leisure)$/][access *=";"],
15way[/^(amenity|building(:part)?|(high|rail|water)way|water|leisure)$/][access *=";"],
16relation[type =~ /^(boundary|multipolygon)$/][access *=";"],
17*[/^(amenity|building(:part)?|entrance|highway|leisure)$/]["4wd_only" *=";"],
18*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][agricultural *=";"],
19*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][bdouble *=";"],
20*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][bicycle *=";"],
21*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][bus *=";"],
22*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][carriage *=";"],
23*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][disabled *=";"],
24*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][dog *=";"],
25*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][emergency *=";"],
26*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][foot *=";"],
27*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][golf_cart *=";"],
28*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][goods *=";"],
29*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][hazmat *=";"],
30*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][hgv *=";"],
31*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][horse *=";"],
32*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][hov *=";"],
33*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][mofa *=";"],
34*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][moped *=";"],
35*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][motor_vehicle *=";"],
36*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][motorcar *=";"],
37*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][motorcycle *=";"],
38*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][psv *=";"],
39*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][snowmobile *=";"],
40*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][ski *=";"],
41*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][taxi *=";"],
42*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][tourist_bus *=";"],
43*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][vehicle *=";"],
44*[/^(amenity|building(:part)?|entrance|highway|leisure)$/][wheelchair *=";"],
45*[railway][train *=";"],
46*[railway][tram *=";"],
47*[railway][subway *=";"],
48*[/^(leisure|water(way)?)$/][boat *=";"],
49*[/^(leisure|water(way)?)$/][canoe *=";"],
50*[/^(leisure|water(way)?)$/][cargo *=";"],
51*[/^(leisure|water(way)?)$/][motorboat *=";"],
52*[/^(leisure|water(way)?)$/][passenger *=";"],
53*[/^(leisure|water(way)?)$/][ship *=";"],
54*[/^(leisure|water(way)?)$/][swimming *=";"] {
55 throwWarning: tr("{0} with multiple values", "{1.key}");
56 group: tr("Multiple values in access tag");
57 suggestAlternative: tr("only one value and additional {0}", "{1.key}:conditional");
58 assertMatch: "node barrier=block access=agricultural;forestry";
59 assertNoMatch: "node barrier=block access=agricultural";
60 assertMatch: "way highway=trunk access=agricultural;forestry";
61 assertNoMatch: "way highway=trunk access=agricultural";
62 assertMatch: "relation type=multipolygon water=lake access=boat;canoe";
63 assertNoMatch: "relation type=multipolygon water=lake access=boat";
64}
65
66/* Multiple access values per direction or lane, #21192 */
67way[/^(high|rail|water)way$/][/^access((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
68way[highway][/^agricultural((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
69way[highway][/^bdouble((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
70way[highway][/^bicycle((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
71way[highway][/^bus((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
72way[highway][/^carriage((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
73way[highway][/^emergency((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
74way[highway][/^foot((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
75way[highway][/^goods((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
76way[highway][/^hazmat((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
77way[highway][/^hgv((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
78way[highway][/^horse((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
79way[highway][/^hov((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
80way[highway][/^mofa((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
81way[highway][/^moped((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
82way[highway][/^motor_vehicle((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
83way[highway][/^motorcar((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
84way[highway][/^motorcycle((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
85way[highway][/^psv((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
86way[highway][/^taxi((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
87way[highway][/^tourist_bus((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
88way[highway][/^vehicle((:both_ways)?:(backward|forward)|:both_ways)$/ =~ /;/],
89way[railway][/^train:(backward|forward)$/ =~ /;/],
90way[railway][/^tram:(backward|forward)$/ =~ /;/],
91way[railway][/^subway:(backward|forward)$/ =~ /;/],
92way[waterway][/^boat:(backward|forward)$/ =~ /;/],
93way[waterway][/^canoe:(backward|forward)$/ =~ /;/],
94way[waterway][/^cargo:(backward|forward)$/ =~ /;/],
95way[waterway][/^motorboat:(backward|forward)$/ =~ /;/],
96way[waterway][/^passenger:(backward|forward)$/ =~ /;/],
97way[waterway][/^ship:(backward|forward)$/ =~ /;/] {
98 throwWarning: tr("Multiple values in accces per direction tag");
99 group: tr("Multiple values in access tag");
100 suggestAlternative: tr("only one value and additional {0}", ":conditional");
101 assertMatch: "way highway=trunk bus:both_ways:forward=designated;yes";
102 assertNoMatch: "way highway=trunk bus:both_ways:forward=designated";
103 assertNoMatch: "way highway=trunk bus=designated;yes";
104}
105way[highway][/^access:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
106way[highway][/^agricultural:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
107way[highway][/^bdouble:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
108way[highway][/^bicycle:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
109way[highway][/^bus:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
110way[highway][/^carriage:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
111way[highway][/^emergency:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
112way[highway][/^foot:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
113way[highway][/^goods:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
114way[highway][/^hazmat:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
115way[highway][/^hgv:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
116way[highway][/^horse:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
117way[highway][/^hov:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
118way[highway][/^mofa:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
119way[highway][/^moped:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
120way[highway][/^motor_vehicle:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
121way[highway][/^motorcar:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
122way[highway][/^motorcycle:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
123way[highway][/^psv:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
124way[highway][/^taxi:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
125way[highway][/^tourist_bus:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/],
126way[highway][/^vehicle:lanes(:both_ways)?(:(backward|forward))?$/ =~ /;/] {
127 throwWarning: tr("Multiple values in access per lane tag");
128 group: tr("Multiple values in access tag");
129 suggestAlternative: tr("only one value and additional {0}", ":conditional");
130 assertMatch: "way highway=trunk bus:lanes:both_ways:forward=designated;yes|no";
131 assertNoMatch: "way highway=trunk bus:lanes:both_ways:forward=designated|no";
132 assertNoMatch: "way highway=trunk bus:both_ways:forward=designated;no";
133}
134
135*[source =~ /^(;.*|.*;;.*|.*;)$/],
136*["source:addr" =~ /^(;.*|.*;;.*|.*;)$/],
137*["source:maxspeed" =~ /^(;.*|.*;;.*|.*;)$/],
138*["source:name" =~ /^(;.*|.*;;.*|.*;)$/],
139*["source:position" =~ /^(;.*|.*;;.*|.*;)$/],
140*["source:postcode" =~ /^(;.*|.*;;.*|.*;)$/],
141*[ref =~ /^(;.*|.*;;.*|.*;)$/],
142*[int_ref =~ /^(;.*|.*;;.*|.*;)$/],
143*[old_ref =~ /^(;.*|.*;;.*|.*;)$/],
144*[source_ref =~ /^(;.*|.*;;.*|.*;)$/],
145*[route_ref =~ /^(;.*|.*;;.*|.*;)$/],
146*[attribution =~ /^(;.*|.*;;.*|.*;)$/],
147*[name =~ /^(;.*|.*;;.*|.*;)$/],
148*[alt_name =~ /^(;.*|.*;;.*|.*;)$/],
149*[note =~ /^(;.*|.*;;.*|.*;)$/],
150*[fixme =~ /^(;.*|.*;;.*|.*;)$/],
151*["addr:housenumber" =~ /^(;.*|.*;;.*|.*;)$/],
152*[destination =~ /^(;.*|.*;;.*|.*;)$/],
153*[exit_to =~ /^(;.*|.*;;.*|.*;)$/],
154*[surface =~ /^(;.*|.*;;.*|.*;)$/],
155*["building:use" =~ /^(;.*|.*;;.*|.*;)$/],
156*[traffic_sign =~ /^(;.*|.*;;.*|.*;)$/],
157*[voltage =~ /^(;.*|.*;;.*|.*;)$/],
158*[sport =~ /^(;.*|.*;;.*|.*;)$/],
159*[cuisine =~ /^(;.*|.*;;.*|.*;)$/] {
160 throwWarning: tr("empty value in semicolon-separated ''{0}''", "{0.key}");
161 assertMatch: "node ref=;A1";
162 assertMatch: "node ref=A1;";
163 assertMatch: "node ref=;";
164 assertMatch: "node ref=A1;;A2";
165 assertNoMatch: "node ref=A1";
166 assertNoMatch: "node ref=A1;A2";
167}
Note: See TracBrowser for help on using the repository browser.