source: josm/trunk/resources/data/validator/deprecated.mapcss@ 18625

Last change on this file since 18625 was 18564, checked in by Klumbumbus, 2 years ago

fix #22397 - Warn about temporary image URLs starting with https://westnordost.de/p/

  • Property svn:eol-style set to native
File size: 74.4 KB
Line 
1*[barrier=wire_fence] {
2 throwWarning: tr("{0} is deprecated", "{0.tag}");
3 group: tr("deprecated tagging");
4 suggestAlternative: "barrier=fence + fence_type=chain_link";
5 fixAdd: "barrier=fence";
6 fixAdd: "fence_type=chain_link";
7 assertMatch: "way barrier=wire_fence";
8 assertNoMatch: "way barrier=fence";
9}
10
11*[barrier=wood_fence] {
12 throwWarning: tr("{0} is deprecated", "{0.tag}");
13 suggestAlternative: "barrier=fence + fence_type=wood";
14 group: tr("deprecated tagging");
15 fixAdd: "barrier=fence";
16 fixAdd: "fence_type=wood";
17}
18
19node[highway=ford] {
20 throwWarning: tr("{0} is deprecated", "{0.tag}");
21 suggestAlternative: "ford=yes";
22 group: tr("deprecated tagging");
23 fixRemove: "highway";
24 fixAdd: "ford=yes";
25}
26way[highway=ford] {
27 throwWarning: tr("{0} is deprecated", "{0.tag}");
28 suggestAlternative: "highway=* + ford=yes";
29 group: tr("deprecated tagging");
30}
31
32/* from http://wiki.openstreetmap.org/wiki/Deprecated_features */
33way[class] {
34 throwWarning: tr("{0} is deprecated", "{0.key}");
35 suggestAlternative: "highway";
36 group: tr("deprecated tagging");
37}
38*[highway=stile] {
39 throwWarning: tr("{0} is deprecated", "{0.tag}");
40 suggestAlternative: "barrier=stile";
41 group: tr("deprecated tagging");
42 fixRemove: "highway";
43 fixAdd: "barrier=stile";
44}
45*[highway=incline] {
46 throwWarning: tr("{0} is deprecated", "{0.tag}");
47 suggestAlternative: "incline";
48 group: tr("deprecated tagging");
49}
50*[highway=incline_steep] {
51 throwWarning: tr("{0} is deprecated", "{0.tag}");
52 suggestAlternative: "incline";
53 group: tr("deprecated tagging");
54}
55*[highway=unsurfaced] {
56 throwWarning: tr("{0} is deprecated", "{0.tag}");
57 suggestAlternative: "highway=* + surface=unpaved";
58 group: tr("deprecated tagging");
59 fixAdd: "highway=road";
60 fixAdd: "surface=unpaved";
61}
62*[landuse=wood] {
63 throwWarning: tr("{0} is deprecated", "{0.tag}");
64 suggestAlternative: "landuse=forest";
65 suggestAlternative: "natural=wood";
66 group: tr("deprecated tagging");
67}
68*[natural=marsh] {
69 throwWarning: tr("{0} is deprecated", "{0.tag}");
70 suggestAlternative: "natural=wetland + wetland=marsh";
71 group: tr("deprecated tagging");
72 fixAdd: "natural=wetland";
73 fixAdd: "wetland=marsh";
74}
75*[highway=byway] {
76 throwWarning: tr("{0} is deprecated", "{0.tag}");
77 group: tr("deprecated tagging");
78}
79*[power_source] {
80 throwWarning: tr("{0} is deprecated", "{0.key}");
81 suggestAlternative: "generator:source";
82 group: tr("deprecated tagging");
83}
84*[power_rating] {
85 throwWarning: tr("{0} is deprecated", "{0.key}");
86 suggestAlternative: "generator:output";
87 group: tr("deprecated tagging");
88}
89
90*[shop=antique] {
91 throwWarning: tr("{0} is deprecated", "{0.tag}");
92 suggestAlternative: "shop=antiques";
93 group: tr("deprecated tagging");
94 fixAdd: "shop=antiques";
95}
96
97*[shop=bags] {
98 throwWarning: tr("{0} is deprecated", "{0.tag}");
99 suggestAlternative: "shop=bag";
100 group: tr("deprecated tagging");
101 fixAdd: "shop=bag";
102}
103
104/* #17527 */
105*[shop=fashion] {
106 throwWarning: tr("{0} is deprecated", "{0.tag}");
107 suggestAlternative: "shop=clothes";
108 group: tr("deprecated tagging");
109 fixAdd: "shop=clothes";
110}
111
112*[shop=organic] {
113 throwWarning: tr("{0} is deprecated", "{0.tag}");
114 suggestAlternative: "shop=* + organic=yes";
115 suggestAlternative: "shop=* + organic=only";
116 group: tr("deprecated tagging");
117}
118
119*[shop=pets] {
120 throwWarning: tr("{0} is deprecated", "{0.tag}");
121 suggestAlternative: "shop=pet";
122 group: tr("deprecated tagging");
123 fixAdd: "shop=pet";
124}
125
126*[shop=pharmacy] {
127 throwWarning: tr("{0} is deprecated", "{0.tag}");
128 suggestAlternative: "amenity=pharmacy";
129 group: tr("deprecated tagging");
130 fixChangeKey: "shop => amenity";
131}
132
133*[bicycle_parking=sheffield] {
134 throwWarning: tr("{0} is deprecated", "{0.tag}");
135 suggestAlternative: "bicycle_parking=stands";
136 group: tr("deprecated tagging");
137 fixAdd: "bicycle_parking=stands";
138}
139
140*[amenity=emergency_phone] {
141 throwWarning: tr("{0} is deprecated", "{0.tag}");
142 suggestAlternative: "emergency=phone";
143 group: tr("deprecated tagging");
144 fixRemove: "amenity";
145 fixAdd: "emergency=phone";
146}
147
148/* #8132 */
149*[sport=gaelic_football] {
150 throwWarning: tr("{0} is deprecated", "{0.tag}");
151 suggestAlternative: "sport=gaelic_games";
152 group: tr("deprecated tagging");
153 fixAdd: "sport=gaelic_games";
154}
155
156/* #8847, #8961 */
157*[power=station] {
158 throwWarning: tr("{0} is deprecated", "{0.tag}");
159 suggestAlternative: "power=plant";
160 suggestAlternative: "power=substation";
161 group: tr("deprecated tagging");
162}
163
164*[power=sub_station] {
165 throwWarning: tr("{0} is deprecated", "{0.tag}");
166 suggestAlternative: "power=substation";
167 group: tr("deprecated tagging");
168 fixAdd: "power=substation";
169}
170
171*[location=rooftop] {
172 throwWarning: tr("{0} is deprecated", "{0.tag}");
173 suggestAlternative: "location=roof";
174 group: tr("deprecated tagging");
175 fixAdd: "location=roof";
176}
177
178*[generator:location] {
179 throwWarning: tr("{0} is deprecated", "{0.key}");
180 suggestAlternative: "location";
181 group: tr("deprecated tagging");
182 fixChangeKey: "generator:location => location";
183}
184
185*[generator:method=dam] {
186 throwWarning: tr("{0} is deprecated", "{0.tag}");
187 suggestAlternative: "generator:method=water-storage";
188 group: tr("deprecated tagging");
189 fixAdd: "generator:method=water-storage";
190}
191
192*[generator:method=pumped-storage] {
193 throwWarning: tr("{0} is deprecated", "{0.tag}");
194 suggestAlternative: "generator:method=water-pumped-storage";
195 group: tr("deprecated tagging");
196 fixAdd: "generator:method=water-pumped-storage";
197}
198
199*[generator:method=pumping] {
200 throwWarning: tr("{0} is deprecated", "{0.tag}");
201 suggestAlternative: "generator:method=water-pumped-storage";
202 group: tr("deprecated tagging");
203 fixAdd: "generator:method=water-pumped-storage";
204}
205
206/* #8962 */
207*[fence_type=chain] {
208 throwWarning: tr("{0} is deprecated", "{0.tag}");
209 suggestAlternative: "barrier=chain";
210 suggestAlternative: "barrier=fence + fence_type=chain_link";
211 group: tr("deprecated tagging");
212}
213
214/* #9000 */
215*[building=entrance] {
216 throwWarning: tr("{0} is deprecated", "{0.tag}");
217 suggestAlternative: "entrance";
218 group: tr("deprecated tagging");
219}
220
221/* #9213 */
222*[board_type=board] {
223 throwWarning: tr("{0} is deprecated", "{0.tag}");
224 group: tr("deprecated tagging");
225 fixRemove: "board_type";
226}
227
228/* #8434 */
229*[man_made=measurement_station] {
230 throwWarning: tr("{0} is deprecated", "{0.tag}");
231 suggestAlternative: "man_made=monitoring_station";
232 group: tr("deprecated tagging");
233 fixAdd: "man_made=monitoring_station";
234}
235
236*[measurement=water_level] {
237 throwWarning: tr("{0} is deprecated", "{0.tag}");
238 suggestAlternative: "monitoring:water_level=yes";
239 group: tr("deprecated tagging");
240 fixRemove: "measurement";
241 fixAdd: "monitoring:water_level=yes";
242}
243
244*[measurement=weather] {
245 throwWarning: tr("{0} is deprecated", "{0.tag}");
246 suggestAlternative: "monitoring:weather=yes";
247 group: tr("deprecated tagging");
248 fixRemove: "measurement";
249 fixAdd: "monitoring:weather=yes";
250}
251
252*[measurement=seismic] {
253 throwWarning: tr("{0} is deprecated", "{0.tag}");
254 suggestAlternative: "monitoring:seismic_activity=yes";
255 group: tr("deprecated tagging");
256 fixRemove: "measurement";
257 fixAdd: "monitoring:seismic_activity=yes";
258}
259
260*[monitoring:river_level] {
261 throwWarning: tr("{0} is deprecated", "{0.key}");
262 suggestAlternative: "monitoring:water_level";
263 group: tr("deprecated tagging");
264 fixChangeKey: "monitoring:river_level => monitoring:water_level";
265}
266
267*[stay] {
268 throwWarning: tr("{0} is deprecated", "{0.key}");
269 suggestAlternative: "maxstay";
270 group: tr("deprecated tagging");
271 fixChangeKey: "stay => maxstay";
272}
273
274/* #9554 */
275*[emergency=aed] {
276 throwWarning: tr("{0} is deprecated", "{0.tag}");
277 suggestAlternative: "emergency=defibrillator";
278 group: tr("deprecated tagging");
279 fixAdd: "emergency=defibrillator";
280}
281
282/* from http://wiki.openstreetmap.org/wiki/Conditional_restrictions#Deprecated_tags */
283*[day_on][!restriction],
284*[day_off][!restriction],
285*[date_on][!restriction],
286*[date_off][!restriction],
287*[hour_on][!restriction],
288*[hour_off][!restriction] {
289 throwWarning: tr("{0} is deprecated", "{0.key}");
290 suggestAlternative: "*:conditional";
291 group: tr("deprecated tagging");
292 assertMatch: "node day_on=0-12";
293}
294
295/* #10000 */
296*[access=designated] {
297 throwWarning: tr("''{0}'' is meaningless, use more specific tags, e.g. ''{1}''", "access=designated", "bicycle=designated");
298 assertMatch: "way access=designated";
299}
300*[access=official] {
301 throwWarning: tr("''{0}'' does not specify the official mode of transportation, use ''{1}'' for example", "access=official", "bicycle=official");
302 assertMatch: "way access=official";
303}
304
305/* #10085 */
306*[fixme=yes], *[FIXME=yes] {
307 throwWarning: tr("{0}={1} is unspecific. Instead of ''{1}'' please give more information about what exactly should be fixed.", "{0.key}", "{0.value}");
308 assertMatch: "way fixme=yes";
309}
310
311*[name][name=~/^(?i)fixme$/] {
312 throwWarning: tr("Wrong usage of {0} tag. Remove {1}, because it is clear that the name is missing even without an additional tag.", "{0.key}", "{0.tag}");
313 fixRemove: "name";
314 assertMatch: "node name=fixme";
315 assertMatch: "node name=Fixme";
316 assertMatch: "node name=FIXME";
317 assertNoMatch: "node name=valid name";
318}
319
320*[note][note=~/^(?i)fixme$/] {
321 throwWarning: tr("{0} is unspecific. Instead use the key fixme with the information what exactly should be fixed in the value of fixme.", "{0.tag}");
322}
323
324/* #10107, #10108, #10929, #13391, #22336 - http://wiki.openstreetmap.org/wiki/Proposed_features/leaftype#Features.2FPages_affected */
325*[type=broad_leaved],
326*[type=broad_leafed] {
327 throwWarning: tr("{0} is deprecated", "{0.tag}");
328 suggestAlternative: "leaf_type=broadleaved";
329 group: tr("deprecated tagging");
330 fixRemove: "{0.key}";
331 fixAdd: "leaf_type=broadleaved";
332}
333*[wood=coniferous],
334*[type=coniferous],
335*[type=conifer] {
336 throwWarning: tr("{0} is deprecated", "{0.tag}");
337 suggestAlternative: "leaf_type=needleleaved";
338 group: tr("deprecated tagging");
339 fixRemove: "{0.key}";
340 fixAdd: "leaf_type=needleleaved";
341}
342*[wood=mixed] {
343 throwWarning: tr("{0} is deprecated", "{0.tag}");
344 suggestAlternative: "leaf_type=mixed";
345 group: tr("deprecated tagging");
346 fixRemove: "wood";
347 fixAdd: "leaf_type=mixed";
348}
349*[wood=evergreen],
350*[type=evergreen] {
351 throwWarning: tr("{0} is deprecated", "{0.tag}");
352 suggestAlternative: "leaf_cycle=evergreen";
353 group: tr("deprecated tagging");
354 fixRemove: "{0.key}";
355 fixAdd: "leaf_cycle=evergreen";
356}
357*[wood=deciduous],
358*[type=deciduous],
359*[type=deciduos] {
360 throwWarning: tr("{0} is deprecated", "{0.tag}");
361 suggestAlternative: "leaf_cycle=deciduous";
362 group: tr("deprecated tagging");
363 fixRemove: "{0.key}";
364 fixAdd: "leaf_cycle=deciduous";
365}
366node[type=palm],
367way[type=palm] {
368 throwWarning: tr("{0} is deprecated", "{0.tag}");
369 suggestAlternative: "leaf_type";
370 suggestAlternative: "trees";
371 suggestAlternative: "species";
372 group: tr("deprecated tagging");
373}
374
375*[natural=land] {
376 throwWarning: tr("{0} is deprecated. Please use instead a multipolygon.", "{0.tag}");
377 group: tr("deprecated tagging");
378 assertMatch: "way natural=land";
379}
380
381/* #10447 - https://wiki.openstreetmap.org/wiki/Proposed_features/Bridge_types#Deprecated_bridge_key_values */
382*[bridge=causeway] {
383 throwWarning: tr("{0} is deprecated", "{0.tag}");
384 suggestAlternative: "ford=yes";
385 suggestAlternative: "bridge=low_water_crossing";
386 suggestAlternative: "embankment=yes";
387 group: tr("deprecated tagging");
388}
389*[bridge=swing] {
390 throwWarning: tr("{0} is deprecated", "{0.tag}");
391 suggestAlternative: "bridge:movable=swing";
392 suggestAlternative: "bridge:structure=simple-suspension";
393 group: tr("deprecated tagging");
394}
395*[bridge=suspension] {
396 throwWarning: tr("{0} is deprecated", "{0.tag}");
397 suggestAlternative: "bridge=yes + bridge:structure=suspension";
398 group: tr("deprecated tagging");
399 fixAdd: "bridge=yes";
400 fixAdd: "bridge:structure=suspension";
401}
402*[bridge=pontoon] {
403 throwWarning: tr("{0} is deprecated", "{0.tag}");
404 suggestAlternative: "bridge=yes + bridge:structure=floating";
405 group: tr("deprecated tagging");
406 fixAdd: "bridge=yes";
407 fixAdd: "bridge:structure=floating";
408}
409
410/* #10530 - Incorrect tag proposed in internal preset for years */
411*[fee=interval],
412*[lit=interval],
413*[supervised=interval] {
414 throwWarning: tr("{0} is deprecated. Please specify interval by using opening_hours syntax", "{0.tag}");
415 group: tr("deprecated tagging");
416}
417
418/* #10582 - JOSM supported this tag as "don't upload this" feature, before the introduction of upload flag at layer level */
419*[/josm\/ignore/] {
420 throwError: tr("{0} is deprecated. Please delete this object and use a private layer instead", "{0.key}");
421 group: tr("deprecated tagging");
422 fixDeleteObject: this;
423}
424
425/* #8281 */
426*[sport=diving] {
427 throwWarning: tr("{0} is deprecated", "{0.tag}");
428 suggestAlternative: "sport=scuba_diving";
429 suggestAlternative: "sport=cliff_diving";
430 group: tr("deprecated tagging");
431}
432
433/* #8281 */
434*[parking=park_and_ride] {
435 throwWarning: tr("{0} is deprecated", "{0.tag}");
436 suggestAlternative: "amenity=parking + park_ride=yes";
437 group: tr("deprecated tagging");
438 fixRemove: "parking";
439 fixAdd: "amenity=parking";
440 fixAdd: "park_ride=yes";
441}
442
443/* #19287, #18334, #17950, #10661, #10837, #11737, #12771, #21009, #22379 */
444*[parking=yes],
445*[playground=yes],
446*[manhole=plain],
447*[manhole=unknown],
448*[manhole=yes],
449*[police=yes],
450*[traffic_calming=yes],
451*[access=restricted],
452*[barrier=yes],
453*[aerialway=yes][!public_transport],
454*[amenity=yes],
455*[leisure=yes],
456*[landuse=yes],
457*[shop="*"],
458*[shop=yes][amenity!=fuel],
459*[craft=yes],
460*[service=yes],
461*[place=yes] {
462 throwWarning: tr("{0}={1} is unspecific. Please replace ''{1}'' by a specific value.", "{0.key}", "{0.value}");
463}
464
465/* #10693 - http://wiki.openstreetmap.org/wiki/Proposed_features/drop_recommendation_for_place_name , #10837 */
466*[place_name][!name] {
467 throwWarning: tr("{0} should be replaced with {1}", "{0.key}", "{1.key}");
468 fixChangeKey: "place_name => name";
469}
470*[place][place_name = *name] {
471 throwWarning: tr("{0} = {1}; remove {0}", "{1.key}", "{1.value}");
472 fixRemove: "{1.key}";
473}
474
475way[sidewalk=yes] {
476 throwWarning: tr("{0} is unspecific", "{0.tag}");
477 suggestAlternative: "sidewalk=left";
478 suggestAlternative: "sidewalk=right";
479 suggestAlternative: "sidewalk=both";
480 suggestAlternative: "sidewalk=separate";
481}
482
483*[waterway=water_point] {
484 throwWarning: tr("{0} is deprecated", "{0.tag}");
485 suggestAlternative: "amenity=water_point";
486 group: tr("deprecated tagging");
487 fixChangeKey: "waterway => amenity";
488}
489*[waterway=waste_disposal] {
490 throwWarning: tr("{0} is deprecated", "{0.tag}");
491 suggestAlternative: "amenity=waste_disposal";
492 group: tr("deprecated tagging");
493 fixChangeKey: "waterway => amenity";
494}
495*[waterway=mooring] {
496 throwWarning: tr("{0} is deprecated", "{0.tag}");
497 suggestAlternative: "mooring=yes";
498 group: tr("deprecated tagging");
499 fixRemove: "waterway";
500 fixAdd: "mooring=yes";
501}
502
503/* #10837, #21268 */
504*[building][levels],
505*[building:part][levels] {
506 throwWarning: tr("{0} is deprecated", "{1.key}");
507 suggestAlternative: "building:levels";
508 group: tr("deprecated tagging");
509 fixChangeKey: "levels => building:levels";
510 set levels_building;
511}
512*[levels]!.levels_building {
513 throwWarning: tr("Unusual key {0}, maybe {1} or {2} is meant", "{0.key}", "level", "building:levels");
514}
515
516/* #10691 */
517*[protected_class] {
518 throwWarning: tr("{0} is deprecated", "{0.key}");
519 suggestAlternative: "protect_class";
520 group: tr("deprecated tagging");
521 fixChangeKey: "protected_class => protect_class";
522}
523
524/* #11070 */
525*[kerb=unknown],
526*[lock=unknown],
527*[hide=unknown],
528*[shelter=unknown],
529*[access=unknown],
530*[capacity:parent=unknown],
531*[capacity:women=unknown],
532*[capacity:disabled=unknown],
533*[crossing=unknown],
534*[foot=unknown] {
535 throwWarning: tr("Unspecific tag {0}", "{0.tag}");
536}
537
538/* #11183 */
539*[sport=skiing] {
540 throwWarning: tr("Definition of {0} is unclear", "{0.tag}");
541 suggestAlternative: tr("{0} + {1} + {2}", "piste:type=*", "piste:difficulty=*", "piste:grooming=*");
542 group: tr("deprecated tagging");
543}
544
545/* #11223 */
546*[waterway=wadi] {
547 throwWarning: tr("{0} is deprecated", "{0.tag}");
548 suggestAlternative: "{0.key}=* + intermittent=yes";
549 suggestAlternative: "natural=valley";
550 group: tr("deprecated tagging");
551}
552
553/* #10346 */
554way[oneway=1] {
555 throwWarning: tr("{0} is deprecated", "{0.tag}");
556 suggestAlternative: "oneway=yes";
557 group: tr("deprecated tagging");
558 fixAdd: "oneway=yes";
559}
560
561/* #11329 */
562way[oneway=-1] {
563 throwWarning: tr("{0} is not recommended. Use the Reverse Ways function from the Tools menu.", "{0.tag}");
564}
565
566*[drinkable] {
567 throwWarning: tr("{0} is deprecated", "{0.key}");
568 suggestAlternative: "drinking_water";
569 group: tr("deprecated tagging");
570}
571
572/* #10329, #15877 */
573 /* simple key change */
574*[color][!colour] {
575 throwWarning: tr("{0} is deprecated", "{0.key}");
576 suggestAlternative: "colour";
577 group: tr("deprecated tagging");
578 fixChangeKey: "color => colour";
579 assertMatch: "way color=red";
580 assertNoMatch: "way color=red colour=red";
581}
582area[building:color][!building:colour] {
583 throwWarning: tr("{0} is deprecated", "{0.key}");
584 suggestAlternative: "building:colour";
585 group: tr("deprecated tagging");
586 fixChangeKey: "building:color => building:colour";
587 assertMatch: "way building:color=red";
588 assertNoMatch: "way building:color=red building:colour=red";
589}
590area[roof:color][!roof:colour] {
591 throwWarning: tr("{0} is deprecated", "{0.key}");
592 suggestAlternative: "roof:colour";
593 group: tr("deprecated tagging");
594 fixChangeKey: "roof:color => roof:colour";
595 assertMatch: "way roof:color=red";
596 assertNoMatch: "way roof:color=red roof:colour=red";
597}
598 /* both tags with same value, remove color */
599*[color][colour][color=*colour] {
600 throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
601 suggestAlternative: "colour";
602 group: tr("deprecated tagging");
603 set samecolor;
604 fixRemove: "color";
605 assertMatch: "way color=red colour=red";
606 assertNoMatch: "way color=red colour=green";
607}
608area[building:color][building:colour]["building:color"=*"building:colour"] {
609 throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
610 suggestAlternative: "building:colour";
611 group: tr("deprecated tagging");
612 set samebuildingcolor;
613 fixRemove: "building:color";
614 assertMatch: "way building:color=red building:colour=red";
615 assertNoMatch: "way building:color=red building:colour=green";
616}
617area[roof:color][roof:colour]["roof:color"=*"roof:colour"] {
618 throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
619 suggestAlternative: "roof:colour";
620 group: tr("deprecated tagging");
621 set sameroofcolor;
622 fixRemove: "roof:color";
623 assertMatch: "way roof:color=red roof:colour=red";
624 assertNoMatch: "way roof:color=red roof:colour=green";
625}
626 /* both tags with different values, no autofix */
627*[color][colour]!.samecolor {
628 throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
629 suggestAlternative: "colour";
630 group: tr("deprecated tagging");
631 assertNoMatch: "way color=red colour=red";
632 assertMatch: "way color=red colour=green";
633}
634*[building:color][building:colour]!.samebuildingcolor {
635 throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
636 suggestAlternative: "building:colour";
637 group: tr("deprecated tagging");
638 assertNoMatch: "way building:color=red building:colour=red";
639 assertMatch: "way building:color=red building:colour=green";
640}
641*[roof:color][roof:colour]!.sameroofcolor {
642 throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
643 suggestAlternative: "roof:colour";
644 group: tr("deprecated tagging");
645 assertNoMatch: "way roof:color=red roof:colour=red";
646 assertMatch: "way roof:color=red roof:colour=green";
647}
648/* further more universal checks, no autofix */
649/* gpxd:color has another warning in unnecessary.mapcss */
650*[/:color/][!building:color][!roof:color][!gpxd:color] {
651 throwWarning: tr("{0} is deprecated", "{0.key}");
652 suggestAlternative: ":colour";
653 group: tr("deprecated tagging");
654 assertNoMatch: "way color=red";
655 assertNoMatch: "way roof:color=grey";
656 assertMatch: "way cycleway:surface:color=grey";
657}
658*[/color:/] {
659 throwWarning: tr("{0} is deprecated", "{0.key}");
660 suggestAlternative: "colour:";
661 group: tr("deprecated tagging");
662 assertNoMatch: "way color=red";
663 assertMatch: "way color:back=grey";
664}
665
666/* #11234 */
667*[/=|\+|\/|&|<|>|;|'|"|%|#|@|\\|,|\.|\{|\}|\?|\*|\^|\$/] {
668 throwWarning: tr("{0}", "{0.key}");
669 group: tr("key with uncommon character");
670}
671
672/* #11330, #18642 */
673*[/^.$/],
674node[/^..$/][!kp][!pk],
675way[/^..$/][route=ferry][!to],
676way[/^..$/][route!=ferry],
677relation[/^..$/][!to] {
678 throwWarning: tr("uncommon short key");
679 assertNoMatch: "relation to=Berlin";
680 assertMatch: "relation fo=bar";
681 assertMatch: "way to=bar";
682 assertNoMatch: "way to=Zuidschermer;Akersloot route=ferry";
683 assertMatch: "node fo=bar";
684 assertMatch: "node f=b";
685 assertNoMatch: "node kp=5"; /* already has a deprecated warning */
686 assertNoMatch: "node pk=7"; /* already has a deprecated warning */
687}
688
689/* #11439 */
690*[sport=hockey] {
691 throwWarning: tr("{0} is deprecated", "{0.tag}");
692 suggestAlternative: "sport=field_hockey";
693 suggestAlternative: "sport=ice_hockey";
694 group: tr("deprecated tagging");
695}
696
697/* #11471 */
698*[sport=billard],
699*[sport=billards],
700*[sport=billiard] {
701 throwWarning: tr("{0} is deprecated", "{0.tag}");
702 suggestAlternative: "sport=billiards";
703 group: tr("deprecated tagging");
704 fixAdd: "sport=billiards";
705}
706
707/* #11499, #16928, #22367 */
708*[payment:electronic_purses=yes] {
709 throwOther: tr("{0} is inaccurate. Use separate tags for each specific type, e.g. {1} or {2}.", "{0.tag}", "payment:ep_geldkarte=yes", "payment:ep_quick=yes");
710}
711*[payment:cryptocurrencies=yes] {
712 throwOther: tr("{0} is inaccurate. Use separate tags for each specific type, e.g. {1} or {2}.", "{0.tag}", "payment:bitcoin=yes", "payment:litecoin=yes");
713}
714
715/* #16253 */
716*[payment:ep_quick],
717*[payment:ep_cash],
718*[payment:ep_proton],
719*[payment:ep_chipknip] {
720 throwWarning: tr("{0} is deprecated", "{0.key}");
721 group: tr("deprecated tagging");
722 fixRemove: "{0.key}";
723}
724
725/* #8717, #20326 */
726*[kp][railway!=milestone] {
727 throwWarning: tr("{0} is deprecated", "{0.key}");
728 suggestAlternative: "distance";
729 group: tr("deprecated tagging");
730 fixChangeKey: "kp => distance";
731}
732*[pk][railway!=milestone] {
733 throwWarning: tr("{0} is deprecated", "{0.key}");
734 suggestAlternative: "distance";
735 group: tr("deprecated tagging");
736 fixChangeKey: "pk => distance";
737}
738*[kp][railway=milestone] {
739 throwWarning: tr("{0} is deprecated", "{0.key}");
740 suggestAlternative: "railway:position";
741 group: tr("deprecated tagging");
742 fixChangeKey: "kp => railway:position";
743}
744*[pk][railway=milestone] {
745 throwWarning: tr("{0} is deprecated", "{0.key}");
746 suggestAlternative: "railway:position";
747 group: tr("deprecated tagging");
748 fixChangeKey: "pk => railway:position";
749}
750*[distance][railway=milestone] {
751 throwWarning: tr("{0} is deprecated for {1}", "{0.key}", "{1.tag}");
752 suggestAlternative: "railway:position";
753 group: tr("deprecated tagging");
754 fixChangeKey: "distance => railway:position";
755}
756
757*[postcode] {
758 throwWarning: tr("{0} is deprecated", "{0.key}");
759 suggestAlternative: "addr:postcode";
760 group: tr("deprecated tagging");
761 suggestAlternative: "postal_code";
762}
763
764*[water=intermittent] {
765 throwWarning: tr("{0} is deprecated", "{0.tag}");
766 suggestAlternative: "intermittent=yes";
767 group: tr("deprecated tagging");
768 fixRemove: "water";
769 fixAdd: "intermittent=yes";
770}
771
772/* #10907, #14141 */
773/* type=waterway on ways is questionable, but the autofix doesn't make it better, so disabled; type=route and type=network is used only on relations */
774way[type][type!=waterway][man_made=pipeline],
775node[type][pipeline=marker] {
776 throwWarning: tr("{0} is deprecated", "{0.key}");
777 suggestAlternative: "substance";
778 group: tr("deprecated tagging");
779 fixChangeKey: "type => substance";
780}
781
782*[landuse=farm] {
783 throwWarning: tr("{0} is deprecated", "{0.tag}");
784 suggestAlternative: "landuse=farmland";
785 suggestAlternative: "landuse=farmyard";
786 group: tr("deprecated tagging");
787}
788
789/* #12135 comment:11 */
790*[seamark=buoy]["seamark:type"=~/^(buoy_cardinal|buoy_installation|buoy_isolated_danger|buoy_lateral|buoy_safe_water|buoy_special_purpose|mooring)$/] {
791 throwWarning: tr("{0} is deprecated", "{0.tag}");
792 suggestAlternative: "{1.tag}";
793 group: tr("deprecated tagging");
794 fixRemove: "seamark";
795}
796*[seamark=buoy]["seamark:type"!~/^(buoy_cardinal|buoy_installation|buoy_isolated_danger|buoy_lateral|buoy_safe_water|buoy_special_purpose|mooring)$/] {
797 throwWarning: tr("{0} is deprecated", "{0.tag}");
798 suggestAlternative: "{1.tag}";
799 group: tr("deprecated tagging");
800}
801/* #12135 */
802*[landuse=conservation] {
803 throwWarning: tr("{0} is deprecated", "{0.tag}");
804 suggestAlternative: "boundary=protected_area";
805 group: tr("deprecated tagging");
806 fixAdd: "boundary=protected_area";
807 fixRemove: "landuse";
808}
809
810/* #12205 */
811*[amenity=kiosk] {
812 throwWarning: tr("{0} is deprecated", "{0.tag}");
813 suggestAlternative: "shop=kiosk";
814 group: tr("deprecated tagging");
815 fixChangeKey: "amenity => shop";
816}
817*[amenity=shop] {
818 throwWarning: tr("{0} is deprecated", "{0.tag}");
819 suggestAlternative: "shop=*";
820 group: tr("deprecated tagging");
821}
822*[shop=fishmonger] {
823 throwWarning: tr("{0} is deprecated", "{0.tag}");
824 suggestAlternative: "shop=seafood";
825 group: tr("deprecated tagging");
826 fixAdd: "shop=seafood";
827}
828*[shop=fish] {
829 throwWarning: tr("{0} is deprecated", "{0.tag}");
830 suggestAlternative: "shop=seafood";
831 suggestAlternative: "shop=pet";
832 suggestAlternative: "shop=fishing";
833 group: tr("deprecated tagging");
834}
835*[shop=betting] {
836 throwWarning: tr("{0} is deprecated", "{0.tag}");
837 suggestAlternative: "shop=bookmaker";
838 suggestAlternative: "shop=lottery";
839 suggestAlternative: "amenity=casino";
840 suggestAlternative: "leisure=amusement_arcade";
841 suggestAlternative: "leisure=adult_gaming_centre";
842 suggestAlternative: "amenity=gambling";
843 group: tr("deprecated tagging");
844}
845*[shop=perfume] {
846 throwWarning: tr("{0} is deprecated", "{0.tag}");
847 suggestAlternative: "shop=perfumery";
848 group: tr("deprecated tagging");
849 fixAdd: "shop=perfumery";
850}
851*[amenity=exercise_point] {
852 throwWarning: tr("{0} is deprecated", "{0.tag}");
853 suggestAlternative: "leisure=fitness_station";
854 group: tr("deprecated tagging");
855 fixAdd: "leisure=fitness_station";
856 fixRemove: "amenity";
857}
858*[shop=auto_parts] {
859 throwWarning: tr("{0} is deprecated", "{0.tag}");
860 suggestAlternative: "shop=car_parts";
861 group: tr("deprecated tagging");
862 fixAdd: "shop=car_parts";
863}
864*[amenity=car_repair] {
865 throwWarning: tr("{0} is deprecated", "{0.tag}");
866 suggestAlternative: "shop=car_repair";
867 group: tr("deprecated tagging");
868 fixChangeKey: "amenity => shop";
869}
870
871/* #12311 */
872*[amenity=studio][type=audio],
873*[amenity=studio][type=radio],
874*[amenity=studio][type=television],
875*[amenity=studio][type=video] {
876 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
877 suggestAlternative: "studio";
878 group: tr("deprecated tagging");
879 fixChangeKey: "type => studio";
880}
881
882/* #11507, #12297, #15409 */
883*[power=cable_distribution_cabinet] {
884 throwWarning: tr("{0} is deprecated", "{0.tag}");
885 suggestAlternative: "man_made=street_cabinet + street_cabinet=*";
886 group: tr("deprecated tagging");
887 fixAdd: "man_made=street_cabinet";
888 fixRemove: "power";
889}
890
891/* #16430 */
892*[power][location=kiosk] {
893 throwWarning: tr("{0} is deprecated", "{1.tag}");
894 group: tr("deprecated tagging");
895 fixAdd: "man_made=street_cabinet";
896 fixAdd: "street_cabinet=power";
897 fixRemove: "location";
898}
899
900/* #12276 */
901*[man_made=well] {
902 throwWarning: tr("{0} is deprecated", "{0.tag}");
903 suggestAlternative: "man_made=water_well";
904 suggestAlternative: "man_made=petroleum_well";
905 group: tr("deprecated tagging");
906}
907*[amenity=dog_bin],
908*[amenity=dog_waste_bin] {
909 throwWarning: tr("{0} is deprecated", "{0.tag}");
910 suggestAlternative: "amenity=waste_basket + waste=dog_excrement + vending=excrement_bags";
911 group: tr("deprecated tagging");
912 fixAdd: "amenity=waste_basket";
913 fixAdd: "waste=dog_excrement";
914 fixAdd: "vending=excrement_bags";
915}
916*[amenity=artwork] {
917 throwWarning: tr("{0} is deprecated", "{0.tag}");
918 suggestAlternative: "tourism=artwork";
919 group: tr("deprecated tagging");
920 fixAdd: "tourism=artwork";
921 fixRemove: "amenity";
922}
923*[amenity=community_center] {
924 throwWarning: tr("{0} is deprecated", "{0.tag}");
925 suggestAlternative: "amenity=community_centre";
926 group: tr("deprecated tagging");
927 fixAdd: "amenity=community_centre";
928}
929*[man_made=cut_line] {
930 throwWarning: tr("{0} is deprecated", "{0.tag}");
931 suggestAlternative: "man_made=cutline";
932 group: tr("deprecated tagging");
933 fixAdd: "man_made=cutline";
934}
935*[amenity=park] {
936 throwWarning: tr("{0} is deprecated", "{0.tag}");
937 suggestAlternative: "leisure=park";
938 group: tr("deprecated tagging");
939 fixAdd: "leisure=park";
940 fixRemove: "amenity";
941}
942*[amenity=hotel] {
943 throwWarning: tr("{0} is deprecated", "{0.tag}");
944 suggestAlternative: "tourism=hotel";
945 group: tr("deprecated tagging");
946 fixAdd: "tourism=hotel";
947 fixRemove: "amenity";
948}
949*[shop=window],
950*[shop=windows] {
951 throwWarning: tr("{0} is deprecated", "{0.tag}");
952 suggestAlternative: "craft=window_construction";
953 group: tr("deprecated tagging");
954 fixAdd: "craft=window_construction";
955 fixRemove: "shop";
956}
957*[amenity=education] {
958 throwWarning: tr("{0} is deprecated", "{0.tag}");
959 suggestAlternative: "amenity=college";
960 suggestAlternative: "amenity=school";
961 suggestAlternative: "amenity=university";
962 suggestAlternative: "landuse=education";
963 group: tr("deprecated tagging");
964}
965*[shop=gallery] {
966 throwWarning: tr("{0} is deprecated", "{0.tag}");
967 suggestAlternative: "shop=art";
968 group: tr("deprecated tagging");
969 fixAdd: "shop=art";
970}
971*[shop=gambling],
972*[leisure=gambling] {
973 throwWarning: tr("{0} is deprecated", "{0.tag}");
974 suggestAlternative: "shop=bookmaker";
975 suggestAlternative: "shop=lottery";
976 suggestAlternative: "amenity=casino";
977 suggestAlternative: "leisure=amusement_arcade";
978 suggestAlternative: "amenity=gambling";
979 group: tr("deprecated tagging");
980}
981*[office=real_estate],
982*[office=real_estate_agent] {
983 throwWarning: tr("{0} is deprecated", "{0.tag}");
984 suggestAlternative: "office=estate_agent";
985 group: tr("deprecated tagging");
986 fixAdd: "office=estate_agent";
987}
988*[shop=glass] {
989 throwWarning: tr("{0} is deprecated", "{0.tag}");
990 suggestAlternative: "shop=glaziery";
991 suggestAlternative: "craft=glaziery";
992 group: tr("deprecated tagging");
993}
994*[amenity=proposed],
995*[amenity=disused],
996*[shop=disused],
997*[highway=abandoned],
998*[historic=abandoned] {
999 throwWarning: tr("{0} is deprecated. Use the {1}: key prefix instead.", "{0.tag}", "{0.value}");
1000 group: tr("deprecated tagging");
1001}
1002
1003/* #12431 */
1004*[amenity=swimming_pool] {
1005 throwWarning: tr("{0} is deprecated", "{0.tag}");
1006 suggestAlternative: "leisure=swimming_pool";
1007 group: tr("deprecated tagging");
1008 fixChangeKey: "amenity => leisure";
1009}
1010
1011/* #17379 */
1012*[amenity=sauna] {
1013 throwWarning: tr("{0} is deprecated", "{0.tag}");
1014 suggestAlternative: "leisure=sauna";
1015 group: tr("deprecated tagging");
1016 fixChangeKey: "amenity => leisure";
1017}
1018
1019/* #12494, #17554 */
1020*[/^[^t][^i][^g].+_[0-9]$/][!/^note_[0-9]$/][!/^description_[0-9]$/] {
1021 throwWarning: tr("{0}", "{0.key}");
1022 group: tr("questionable key (ending with a number)");
1023 assertMatch: "way name_1=foo";
1024 assertNoMatch: "way note_2=foo";
1025 assertNoMatch: "way description_3=foo";
1026 assertNoMatch: "way tiger:name_base_1=bar"; /*should not warn for key tiger:name_base_1 */
1027}
1028
1029/* #12500 */
1030*[sport=skating] {
1031 throwWarning: tr("{0} is deprecated", "{0.tag}");
1032 suggestAlternative: "sport=ice_skating";
1033 suggestAlternative: "sport=roller_skating";
1034 group: tr("deprecated tagging");
1035}
1036
1037way[barrier=wall][type=noise_barrier][!wall],
1038way[barrier=wall][type=noise_barrier][wall=noise_barrier] {
1039 throwWarning: tr("{0} is deprecated", "{1.tag}");
1040 suggestAlternative: "wall=noise_barrier";
1041 group: tr("deprecated tagging");
1042 fixChangeKey: "type => wall";
1043}
1044way[barrier=wall][type=noise_barrier][wall][wall!=noise_barrier] {
1045 throwWarning: tr("{0} is deprecated", "{1.tag}");
1046 suggestAlternative: "wall=noise_barrier";
1047 group: tr("deprecated tagging");
1048}
1049
1050/* #8978, 12588 */
1051*[amenity=public_building] {
1052 throwWarning: tr("{0} is deprecated", "{0.tag}");
1053 suggestAlternative: "amenity=townhall";
1054 suggestAlternative: "amenity=community_centre";
1055 suggestAlternative: "amenity=hospital";
1056 suggestAlternative: "leisure=sports_centre";
1057 suggestAlternative: "office=government";
1058 suggestAlternative: "building=hospital";
1059 suggestAlternative: "building=public";
1060 suggestAlternative: "...";
1061 group: tr("deprecated tagging");
1062}
1063
1064/* #18517 */
1065*[office=administrative] {
1066 throwWarning: tr("{0} is deprecated", "{0.tag}");
1067 suggestAlternative: "office=government";
1068 group: tr("deprecated tagging");
1069 fixAdd: "office=government";
1070}
1071
1072/* #12708 */
1073*[vending=news_papers] {
1074 throwWarning: tr("{0} is deprecated", "{0.tag}");
1075 suggestAlternative: "vending=newspapers";
1076 group: tr("deprecated tagging");
1077 fixAdd: "vending=newspapers";
1078}
1079
1080/* #12771 */
1081*[service=drive_through] {
1082 throwWarning: tr("{0} is deprecated", "{0.tag}");
1083 suggestAlternative: "service=drive-through";
1084 group: tr("deprecated tagging");
1085 fixAdd: "service=drive-through";
1086}
1087
1088/* #12771, #9895 */
1089*[noexit][noexit!=yes][noexit!=no], /* noexit=no has an own warning */
1090way[highway=service][service][service !~ /^(alley|drive-through|drive_through|driveway|emergency_access|parking_aisle|rest_area|slipway|yes)$/], /* drive_through and yes have special warnings */
1091way[railway=rail][service][service !~ /^(crossover|siding|spur|yard)$/],
1092way[waterway=canal][service][service !~ /^(irrigation|transportation|water_power)$/] {
1093 throwWarning: tr("The key {0} has an uncommon value.", "{1.key}");
1094}
1095
1096/* #13008 */
1097*[name:botanical] {
1098 throwWarning: tr("{0} is deprecated", "{0.key}");
1099 suggestAlternative: "species";
1100 group: tr("deprecated tagging");
1101}
1102
1103/* #11344, #13101, #15480 */
1104node[pole=air_to_ground],
1105node[pole=transition] {
1106 throwWarning: tr("{0} is deprecated", "{0.tag}");
1107 suggestAlternative: "location:transition=yes";
1108 group: tr("deprecated tagging");
1109 fixAdd: "location:transition=yes";
1110 fixRemove: "pole";
1111}
1112node[tower=air_to_ground],
1113node[tower=transition] {
1114 throwWarning: tr("{0} is deprecated", "{0.tag}");
1115 suggestAlternative: "location:transition=yes";
1116 group: tr("deprecated tagging");
1117 fixAdd: "location:transition=yes";
1118 fixRemove: "tower";
1119}
1120
1121/* #13138 */
1122area[landuse=pond] {
1123 throwWarning: tr("{0} is deprecated", "{0.tag}");
1124 suggestAlternative: "natural=water + water=pond";
1125 group: tr("deprecated tagging");
1126 fixAdd: "natural=water";
1127 fixAdd: "water=pond";
1128 fixRemove: "landuse";
1129}
1130
1131*[shop=souvenir],
1132*[shop=souvenirs],
1133*[shop=souveniers] {
1134 throwWarning: tr("{0} is deprecated", "{0.tag}");
1135 suggestAlternative: "shop=gift";
1136 group: tr("deprecated tagging");
1137 fixAdd: "shop=gift";
1138}
1139
1140*[vending=animal_food] {
1141 throwWarning: tr("{0} is deprecated", "{0.tag}");
1142 suggestAlternative: "vending=animal_feed";
1143 group: tr("deprecated tagging");
1144 fixAdd: "vending=animal_feed";
1145}
1146
1147/* #14376 */
1148node[vending=photos][amenity=vending_machine],
1149node[vending=photo][amenity=vending_machine] {
1150 throwWarning: tr("{0} is deprecated", "{0.tag}");
1151 suggestAlternative: "amenity=photo_booth";
1152 group: tr("deprecated tagging");
1153 fixRemove: "vending";
1154 fixAdd: "amenity=photo_booth";
1155
1156}
1157node[vending=photos][amenity!=vending_machine] {
1158 throwWarning: tr("{0} is deprecated", "{0.tag}");
1159 suggestAlternative: "amenity=photo_booth";
1160 group: tr("deprecated tagging");
1161}
1162
1163/* #13653 */
1164node[highway=emergency_access_point][phone][!emergency_telephone_code],
1165way[highway=emergency_access_point][phone][!emergency_telephone_code] {
1166 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1167 suggestAlternative: "emergency_telephone_code";
1168 group: tr("deprecated tagging");
1169 fixChangeKey: "phone => emergency_telephone_code";
1170 assertMatch: "node highway=emergency_access_point phone=123";
1171 assertNoMatch: "node highway=emergency_access_point emergency_telephone_code=456";
1172 assertNoMatch: "node highway=emergency_access_point phone=123 emergency_telephone_code=456";
1173 assertNoMatch: "node phone=123";
1174}
1175node[highway=emergency_access_point][phone=*emergency_telephone_code],
1176way[highway=emergency_access_point][phone=*emergency_telephone_code] {
1177 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1178 suggestAlternative: "emergency_telephone_code";
1179 group: tr("deprecated tagging");
1180 fixRemove: "phone";
1181 assertNoMatch: "node highway=emergency_access_point phone=123";
1182 assertNoMatch: "node highway=emergency_access_point emergency_telephone_code=123";
1183 assertMatch: "node highway=emergency_access_point phone=123 emergency_telephone_code=123";
1184}
1185node[highway=emergency_access_point][phone][emergency_telephone_code][phone!=*emergency_telephone_code],
1186way[highway=emergency_access_point][phone][emergency_telephone_code][phone!=*emergency_telephone_code] {
1187 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1188 suggestAlternative: "emergency_telephone_code";
1189 group: tr("deprecated tagging");
1190 assertNoMatch: "node highway=emergency_access_point phone=123";
1191 assertNoMatch: "node highway=emergency_access_point emergency_telephone_code=123";
1192 assertNoMatch: "node highway=emergency_access_point phone=123 emergency_telephone_code=123";
1193}
1194
1195/* #13879 */
1196way[tracktype=1] {
1197 throwError: tr("{0}", "{0.tag}");
1198 suggestAlternative: "tracktype=grade1";
1199 group: tr("misspelled value");
1200 fixAdd: "tracktype=grade1";
1201}
1202way[tracktype=2] {
1203 throwError: tr("{0}", "{0.tag}");
1204 suggestAlternative: "tracktype=grade2";
1205 group: tr("misspelled value");
1206 fixAdd: "tracktype=grade2";
1207}
1208way[tracktype=3] {
1209 throwError: tr("{0}", "{0.tag}");
1210 suggestAlternative: "tracktype=grade3";
1211 group: tr("misspelled value");
1212 fixAdd: "tracktype=grade3";
1213}
1214way[tracktype=4] {
1215 throwError: tr("{0}", "{0.tag}");
1216 suggestAlternative: "tracktype=grade4";
1217 group: tr("misspelled value");
1218 fixAdd: "tracktype=grade4";
1219}
1220way[tracktype=5] {
1221 throwError: tr("{0}", "{0.tag}");
1222 suggestAlternative: "tracktype=grade5";
1223 group: tr("misspelled value");
1224 fixAdd: "tracktype=grade5";
1225}
1226way[tracktype][tracktype!~/^(1|2|3|4|5|grade1|grade2|grade3|grade4|grade5)$/] {
1227 throwError: tr("wrong value: {0}", "{0.tag}");
1228 suggestAlternative: "tracktype=grade1";
1229 suggestAlternative: "tracktype=grade2";
1230 suggestAlternative: "tracktype=grade3";
1231 suggestAlternative: "tracktype=grade4";
1232 suggestAlternative: "tracktype=grade5";
1233}
1234
1235area[area][area!=yes][area!=no] {
1236 throwError: tr("wrong value: {0}", "{0.tag}");
1237 suggestAlternative: "area=yes";
1238 suggestAlternative: "area=no";
1239}
1240
1241/* #13953 */
1242*[amenity=hunting_stand][lock=yes],
1243*[amenity=hunting_stand][lock=no] {
1244 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1245 suggestAlternative: "lockable";
1246 group: tr("deprecated tagging");
1247 fixChangeKey: "lock => lockable";
1248}
1249
1250*[amenity=advertising][!advertising] {
1251 throwWarning: tr("{0} is deprecated", "{0.tag}");
1252 suggestAlternative: "advertising=*";
1253 group: tr("deprecated tagging");
1254}
1255*[amenity=advertising][advertising] {
1256 throwWarning: tr("{0} is deprecated", "{0.tag}");
1257 suggestAlternative: "advertising=*";
1258 group: tr("deprecated tagging");
1259 fixRemove: "amenity";
1260}
1261
1262way[direction=up][incline=up],
1263way[direction=down][incline=down],
1264way[direction=up][!incline],
1265way[direction=down][!incline] {
1266 throwWarning: tr("{0} is deprecated", "{0.tag}");
1267 suggestAlternative: "incline";
1268 group: tr("deprecated tagging");
1269 fixChangeKey: "direction => incline";
1270}
1271way[direction=up][incline][incline!=up],
1272way[direction=down][incline][incline!=down] {
1273 throwWarning: tr("{0} is deprecated", "{0.tag}");
1274 suggestAlternative: "incline";
1275 group: tr("deprecated tagging");
1276}
1277
1278*[building=true],
1279*[building="*"],
1280*[building=Y],
1281*[building=y],
1282*[building=1] {
1283 throwError: tr("{0}", "{0.tag}");
1284 suggestAlternative: "building=yes";
1285 group: tr("misspelled value");
1286 fixAdd: "building=yes";
1287}
1288
1289/* #17786, #18612 */
1290*[building=abandoned],
1291*[building=address],
1292*[building=bing],
1293*[building=collapsed],
1294*[building=damaged],
1295*[building=demolished],
1296*[building=disused],
1297*[building=fixme],
1298*[building=occupied],
1299*[building=razed] {
1300 throwWarning: tr("{0} is not a building type.", "{0.tag}");
1301 group: tr("deprecated tagging");
1302}
1303*[building=other],
1304*[building=unclassified],
1305*[building=undefined],
1306*[building=unknown],
1307*[building=unidentified] {
1308 throwWarning: tr("{0} is not a building type.", "{0.tag}");
1309 group: tr("deprecated tagging");
1310 fixAdd: "building=yes";
1311}
1312
1313/* #15675 */
1314node[power=transformer][location=pole][transformer] {
1315 throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
1316 group: tr("deprecated tagging");
1317 fixChangeKey: "location => power";
1318}
1319node[power=transformer][location=pole][!transformer] {
1320 throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
1321 group: tr("deprecated tagging");
1322 fixChangeKey: "location => power";
1323 fixAdd: "transformer=yes";
1324}
1325
1326node[tourism=picnic_table],
1327node[amenity=picnic_table],
1328node[leisure=picnic],
1329node[leisure=picnic_site] {
1330 throwWarning: tr("{0} is deprecated", "{0.tag}");
1331 suggestAlternative: "tourism=picnic_site";
1332 suggestAlternative: "leisure=picnic_table";
1333 group: tr("deprecated tagging");
1334}
1335
1336/* #15804 */
1337relation[water=salt],
1338way[water=salt],
1339way[water=salt_pool],
1340way[water=salt_panne],
1341way[water=salt_pond] {
1342 throwWarning: tr("{0} is deprecated", "{0.tag}");
1343 suggestAlternative: "salt=yes";
1344 suggestAlternative: "landuse=salt_pond";
1345 group: tr("deprecated tagging");
1346}
1347
1348/* #15805 */
1349way[water=tidal] {
1350 throwWarning: tr("{0} is deprecated", "{0.tag}");
1351 suggestAlternative: "tidal=yes";
1352 fixAdd: "tidal=yes";
1353 fixRemove: "water";
1354 group: tr("deprecated tagging");
1355}
1356
1357*[amenity=toilet] {
1358 throwError: tr("{0}", "{0.tag}");
1359 suggestAlternative: "amenity=toilets";
1360 group: tr("misspelled value");
1361 fixAdd: "amenity=toilets";
1362}
1363
1364way[power=busbar] {
1365 throwWarning: tr("{0} is deprecated", "{0.tag}");
1366 suggestAlternative: "power=line + line=busbar";
1367 group: tr("deprecated tagging");
1368 fixAdd: "power=line";
1369 fixAdd: "line=busbar";
1370}
1371
1372/* #16924 */
1373*[man_made=MDF],
1374*[man_made=telephone_exchange] {
1375 throwWarning: tr("{0} is deprecated", "{0.tag}");
1376 suggestAlternative: "telecom=exchange";
1377 fixAdd: "telecom=exchange";
1378 fixRemove: "man_made";
1379 group: tr("deprecated tagging");
1380}
1381*[building=central_office] {
1382 throwWarning: tr("{0} is deprecated", "{0.tag}");
1383 suggestAlternative: "telecom=exchange";
1384 fixAdd: "telecom=exchange";
1385 fixAdd: "building=yes";
1386 group: tr("deprecated tagging");
1387}
1388*[telecom=central_office] {
1389 throwWarning: tr("{0} is deprecated", "{0.tag}");
1390 suggestAlternative: "telecom=exchange";
1391 fixAdd: "telecom=exchange";
1392 group: tr("deprecated tagging");
1393}
1394
1395/* #16925 */
1396node[communication=outdoor_dslam],
1397node[man_made=outdoor_dslam],
1398node[street_cabinet=outdoor_dslam] {
1399 throwWarning: tr("{0} is deprecated", "{0.tag}");
1400 suggestAlternative: "telecom=service_device";
1401 fixAdd: "telecom=service_device";
1402 fixRemove: "{0.key}";
1403 group: tr("deprecated tagging");
1404}
1405node[telecom=dslam],
1406node[telecom=outdoor_dslam] {
1407 throwWarning: tr("{0} is deprecated", "{0.tag}");
1408 suggestAlternative: "telecom=service_device";
1409 fixAdd: "telecom=service_device";
1410 group: tr("deprecated tagging");
1411}
1412
1413/* #15774 */
1414node[amenity=fire_hydrant] {
1415 throwWarning: tr("{0} is deprecated", "{0.tag}");
1416 suggestAlternative: "emergency=fire_hydrant";
1417 fixChangeKey: "amenity => emergency";
1418 group: tr("deprecated tagging");
1419}
1420node[fire_hydrant:type=pond] {
1421 throwWarning: tr("{0} is deprecated", "{0.tag}");
1422 suggestAlternative: "water_source=pond";
1423 fixAdd: "water_source=pond";
1424 fixRemove: "{0.key}";
1425 group: tr("deprecated tagging");
1426}
1427node[fire_hydrant:flow_capacity] {
1428 throwWarning: tr("{0} is deprecated", "{0.key}");
1429 suggestAlternative: "flow_rate";
1430 group: tr("deprecated tagging");
1431}
1432node[emergency=fire_hydrant][in_service=no] {
1433 throwWarning: tr("{0} is deprecated", "{1.tag}");
1434 suggestAlternative: "disused:emergency=fire_hydrant";
1435 fixAdd: "disused:emergency=fire_hydrant";
1436 fixRemove: "{1.key}";
1437 fixRemove: "{0.key}";
1438 group: tr("deprecated tagging");
1439}
1440node[fire_hydrant:water_source] {
1441 throwWarning: tr("{0} is deprecated", "{0.key}");
1442 suggestAlternative: "water_source";
1443 fixChangeKey: "fire_hydrant:water_source => water_source";
1444 group: tr("deprecated tagging");
1445}
1446
1447/* #17383 */
1448*[natural=waterfall] {
1449 throwWarning: tr("{0} is deprecated", "{0.tag}");
1450 suggestAlternative: "waterway=waterfall";
1451 fixChangeKey: "natural => waterway";
1452 group: tr("deprecated tagging");
1453}
1454
1455/* #17249 */
1456*[religion=unitarian] {
1457 throwWarning: tr("{0} is deprecated", "{0.tag}");
1458 suggestAlternative: "religion=unitarian_universalist";
1459 fixAdd: "religion=unitarian_universalist";
1460 group: tr("deprecated tagging");
1461}
1462
1463*[shop=shopping_centre] {
1464 throwWarning: tr("{0} is deprecated", "{0.tag}");
1465 suggestAlternative: "shop=mall";
1466 fixAdd: "shop=mall";
1467 group: tr("deprecated tagging");
1468}
1469
1470/* #17504 */
1471*[is_in],
1472node[/^is_in:/],
1473way[/^is_in:/] {
1474 throwWarning: tr("{0} is deprecated", "{0.key}");
1475 group: tr("deprecated tagging");
1476 fixRemove: "{0.key}";
1477}
1478
1479/* #17593 */
1480*[sport=football] {
1481 throwWarning: tr("{0} is deprecated", "{0.tag}");
1482 suggestAlternative: "sport=soccer";
1483 suggestAlternative: "sport=american_football";
1484 suggestAlternative: "sport=australian_football";
1485 suggestAlternative: "sport=canadian_football";
1486 suggestAlternative: "sport=rugby_league";
1487 suggestAlternative: "sport=rugby_union";
1488 suggestAlternative: "sport=gaelic_games";
1489 group: tr("deprecated tagging");
1490}
1491
1492/* #17556 */
1493*[leisure=common] {
1494 throwWarning: tr("{0} is deprecated", "{0.tag}");
1495 suggestAlternative: "landuse=*";
1496 suggestAlternative: "leisure=*";
1497 suggestAlternative: "designation=common";
1498 group: tr("deprecated tagging");
1499}
1500
1501/* #17043 */
1502*[cuisine=vegan],
1503*[cuisine=vegetarian] {
1504 throwWarning: tr("{0} is deprecated", "{0.tag}");
1505 suggestAlternative: concat("diet:", "{0.value}", "=yes");
1506 suggestAlternative: concat("diet:", "{0.value}", "=only");
1507 group: tr("deprecated tagging");
1508}
1509
1510/* #17798 */
1511*[kitchen_hours] {
1512 throwWarning: tr("{0} is deprecated", "{0.key}");
1513 suggestAlternative: "opening_hours:kitchen";
1514 fixChangeKey: "kitchen_hours => opening_hours:kitchen";
1515 group: tr("deprecated tagging");
1516}
1517
1518/* #17681 */
1519*[shop=money_transfer] {
1520 throwWarning: tr("{0} is deprecated", "{0.tag}");
1521 suggestAlternative: "amenity=money_transfer";
1522 fixChangeKey: "shop => amenity";
1523 group: tr("deprecated tagging");
1524}
1525
1526*[contact:google_plus] {
1527 throwWarning: tr("{0} is deprecated", "{0.key}");
1528 fixRemove: "contact:google_plus";
1529 group: tr("deprecated tagging");
1530}
1531
1532/* #17370 */
1533*[amenity=garages],
1534*[amenity=garage] {
1535 throwWarning: tr("{0} is deprecated", "{0.tag}");
1536 suggestAlternative: concat("building=", "{0.value}");
1537 suggestAlternative: "landuse=garages";
1538 suggestAlternative: "amenity=parking + parking=garage_boxes";
1539 group: tr("deprecated tagging");
1540}
1541*[shop=winery],
1542*[amenity=winery] {
1543 throwWarning: tr("{0} is deprecated", "{0.tag}");
1544 suggestAlternative: "craft=winery";
1545 suggestAlternative: "shop=wine";
1546 group: tr("deprecated tagging");
1547}
1548*[amenity=youth_centre] {
1549 throwWarning: tr("{0} is deprecated", "{0.tag}");
1550 suggestAlternative: "amenity=community_centre + community_centre=youth_centre";
1551 fixAdd: "amenity=community_centre";
1552 fixAdd: "community_centre=youth_centre";
1553 group: tr("deprecated tagging");
1554}
1555*[building:type][building=yes],
1556*[building:type][!building] {
1557 throwWarning: tr("{0} is deprecated", "{0.key}");
1558 suggestAlternative: "building";
1559 group: tr("deprecated tagging");
1560 fixChangeKey: "building:type => building";
1561 assertMatch: "way building:type=church";
1562 assertMatch: "way building:type=church building=yes";
1563 assertNoMatch: "way building:type=church building=supermarket";
1564}
1565*[building:type][building][building!=yes] {
1566 throwWarning: tr("{0} is deprecated", "{0.key}");
1567 suggestAlternative: "building";
1568 group: tr("deprecated tagging");
1569 assertNoMatch: "way building:type=church";
1570 assertNoMatch: "way building:type=church building=yes";
1571 assertMatch: "way building:type=church building=supermarket";
1572}
1573*[escalator] {
1574 throwWarning: tr("{0} is deprecated", "{0.key}");
1575 suggestAlternative: "highway=steps + conveying=*";
1576 group: tr("deprecated tagging");
1577}
1578*[fenced] {
1579 throwWarning: tr("{0} is deprecated", "{0.key}");
1580 suggestAlternative: "barrier=fence";
1581 group: tr("deprecated tagging");
1582}
1583*[historic_name][!old_name] {
1584 throwWarning: tr("{0} is deprecated", "{0.key}");
1585 suggestAlternative: "old_name";
1586 group: tr("deprecated tagging");
1587 fixChangeKey: "historic_name => old_name";
1588}
1589*[historic_name][old_name] {
1590 throwWarning: tr("{0} is deprecated", "{0.key}");
1591 suggestAlternative: "old_name";
1592 group: tr("deprecated tagging");
1593}
1594*[landuse=field] {
1595 throwWarning: tr("{0} is deprecated", "{0.tag}");
1596 suggestAlternative: "landuse=farmland";
1597 group: tr("deprecated tagging");
1598 fixAdd: "landuse=farmland";
1599}
1600*[leisure=beach] {
1601 throwWarning: tr("{0} is deprecated", "{0.tag}");
1602 suggestAlternative: "natural=beach";
1603 suggestAlternative: "leisure=beach_resort";
1604 group: tr("deprecated tagging");
1605}
1606*[leisure=club] {
1607 throwWarning: tr("{0} is deprecated", "{0.tag}");
1608 suggestAlternative: "club=*";
1609 group: tr("deprecated tagging");
1610}
1611*[leisure=video_arcade] {
1612 throwWarning: tr("{0} is deprecated", "{0.tag}");
1613 suggestAlternative: "leisure=amusement_arcade";
1614 suggestAlternative: "leisure=adult_gaming_centre";
1615 group: tr("deprecated tagging");
1616}
1617*[man_made=jetty] {
1618 throwWarning: tr("{0} is deprecated", "{0.tag}");
1619 suggestAlternative: "man_made=pier";
1620 group: tr("deprecated tagging");
1621 fixAdd: "man_made=pier";
1622}
1623*[man_made=village_pump] {
1624 throwWarning: tr("{0} is deprecated", "{0.tag}");
1625 suggestAlternative: "man_made=water_well";
1626 group: tr("deprecated tagging");
1627 fixAdd: "man_made=water_well";
1628}
1629*[man_made=water_tank] {
1630 throwWarning: tr("{0} is deprecated", "{0.tag}");
1631 suggestAlternative: "man_made=storage_tank + content=water";
1632 group: tr("deprecated tagging");
1633 fixAdd: "man_made=storage_tank";
1634 fixAdd: "content=water";
1635}
1636*[natural=moor] {
1637 throwWarning: tr("{0} is deprecated", "{0.tag}");
1638 suggestAlternative: "natural=heath";
1639 suggestAlternative: "natural=scrub";
1640 suggestAlternative: "natural=grassland";
1641 suggestAlternative: "natural=wetland";
1642 suggestAlternative: "natural=fell";
1643 suggestAlternative: "natural=tundra";
1644 suggestAlternative: "landuse=meadow + meadow=agricultural";
1645 group: tr("deprecated tagging");
1646}
1647*[noexit=no][!fixme] {
1648 throwWarning: tr("{0} is deprecated", "{0.tag}");
1649 suggestAlternative: "fixme=continue";
1650 group: tr("deprecated tagging");
1651 fixAdd: "fixme=continue";
1652 fixRemove: "noexit";
1653}
1654*[noexit=no][fixme] {
1655 throwWarning: tr("{0} is deprecated", "{0.tag}");
1656 suggestAlternative: "fixme=continue";
1657 group: tr("deprecated tagging");
1658}
1659*[shop=dive] {
1660 throwWarning: tr("{0} is deprecated", "{0.tag}");
1661 suggestAlternative: "shop=scuba_diving";
1662 group: tr("deprecated tagging");
1663 fixAdd: "shop=scuba_diving";
1664}
1665*[shop=furnace] {
1666 throwWarning: tr("{0} is deprecated", "{0.tag}");
1667 suggestAlternative: "shop=fireplace";
1668 suggestAlternative: "craft=plumber";
1669 group: tr("deprecated tagging");
1670}
1671*[sport=paragliding] {
1672 throwWarning: tr("{0} is deprecated", "{0.tag}");
1673 suggestAlternative: "sport=free_flying";
1674 group: tr("deprecated tagging");
1675 fixAdd: "sport=free_flying";
1676}
1677*[tourism=bed_and_breakfast] {
1678 throwWarning: tr("{0} is deprecated", "{0.tag}");
1679 suggestAlternative: "tourism=guest_house + guest_house=bed_and_breakfast";
1680 group: tr("deprecated tagging");
1681 fixAdd: "tourism=guest_house";
1682 fixAdd: "guest_house=bed_and_breakfast";
1683}
1684
1685/* #17880 */
1686*[diaper=yes],
1687*[diaper=no] {
1688 throwWarning: tr("{0} is deprecated", "{0.tag}");
1689 suggestAlternative: concat("changing_table=", "{0.value}");
1690 group: tr("deprecated tagging");
1691 fixChangeKey: "diaper => changing_table";
1692 set diaper_checked;
1693}
1694*[diaper][diaper =~ /^[1-9][0-9]*$/] {
1695 throwWarning: tr("{0} is deprecated", "{0.tag}");
1696 suggestAlternative: concat("changing_table=yes + changing_table:count=", "{0.value}");
1697 group: tr("deprecated tagging");
1698 fixChangeKey: "diaper => changing_table:count";
1699 fixAdd: "changing_table=yes";
1700 set diaper_checked;
1701}
1702*[diaper=room] {
1703 throwWarning: tr("{0} is deprecated", "{0.tag}");
1704 suggestAlternative: "changing_table=room";
1705 suggestAlternative: "changing_table=dedicated_room";
1706 group: tr("deprecated tagging");
1707 set diaper_checked;
1708}
1709*[diaper]!.diaper_checked {
1710 throwWarning: tr("{0} is deprecated", "{0.key}");
1711 suggestAlternative: "changing_table";
1712 group: tr("deprecated tagging");
1713}
1714*[diaper:male=yes] {
1715 throwWarning: tr("{0} is deprecated", "{0.tag}");
1716 suggestAlternative: "changing_table:location=male_toilet";
1717 group: tr("deprecated tagging");
1718 fixAdd: "changing_table:location=male_toilet";
1719 fixRemove: "diaper:male";
1720 set diaper___checked;
1721}
1722*[diaper:female=yes] {
1723 throwWarning: tr("{0} is deprecated", "{0.tag}");
1724 suggestAlternative: "changing_table:location=female_toilet";
1725 group: tr("deprecated tagging");
1726 fixAdd: "changing_table:location=female_toilet";
1727 fixRemove: "diaper:female";
1728 set diaper___checked;
1729}
1730*[diaper:unisex=yes] {
1731 throwWarning: tr("{0} is deprecated", "{0.tag}");
1732 suggestAlternative: "changing_table:location=unisex_toilet";
1733 group: tr("deprecated tagging");
1734 fixAdd: "changing_table:location=unisex_toilet";
1735 fixRemove: "diaper:unisex";
1736 set diaper___checked;
1737}
1738*[diaper:wheelchair=yes],
1739*[diaper:wheelchair=no] {
1740 throwWarning: tr("{0} is deprecated", "{0.tag}");
1741 suggestAlternative: concat("changing_table:wheelchair=", "{0.value}");
1742 group: tr("deprecated tagging");
1743 fixChangeKey: "diaper:wheelchair => changing_table:wheelchair";
1744 set diaper___checked;
1745}
1746*[diaper:fee=yes],
1747*[diaper:fee=no] {
1748 throwWarning: tr("{0} is deprecated", "{0.tag}");
1749 suggestAlternative: concat("changing_table:fee=", "{0.value}");
1750 group: tr("deprecated tagging");
1751 fixChangeKey: "diaper:fee => changing_table:fee";
1752 set diaper___checked;
1753}
1754*[/^diaper:/]!.diaper___checked {
1755 throwWarning: tr("{0} is deprecated", "diaper:*");
1756 suggestAlternative: "changing_table:*";
1757 group: tr("deprecated tagging");
1758}
1759*[changing_table][changing_table!~/^(yes|no|limited)$/] {
1760 throwWarning: tr("wrong value: {0}", "{0.tag}");
1761 suggestAlternative: "changing_table=yes";
1762 suggestAlternative: "changing_table=no";
1763 suggestAlternative: "changing_table=limited";
1764}
1765
1766/* #17990 */
1767*[roof:shape=half_hipped] {
1768 throwWarning: tr("{0} is deprecated", "{0.tag}");
1769 suggestAlternative: "roof:shape=half-hipped";
1770 group: tr("deprecated tagging");
1771 fixAdd: "roof:shape=half-hipped";
1772}
1773
1774/* #18003 */
1775*[bridge_name] {
1776 throwWarning: tr("{0} is deprecated", "{0.key}");
1777 suggestAlternative: "bridge:name";
1778 group: tr("deprecated tagging");
1779 fixChangeKey: "bridge_name => bridge:name";
1780}
1781
1782/* #18007 */
1783*[access=public] {
1784 throwWarning: tr("{0} is deprecated", "{0.tag}");
1785 suggestAlternative: "access=yes";
1786 group: tr("deprecated tagging");
1787 fixAdd: "access=yes";
1788}
1789
1790/* #17330 */
1791*[crossing=island] {
1792 throwWarning: tr("{0} is deprecated", "{0.tag}");
1793 suggestAlternative: "crossing:island=yes";
1794 group: tr("deprecated tagging");
1795 fixRemove: "crossing";
1796 fixAdd: "crossing:island=yes";
1797}
1798
1799/* #18152 */
1800*[recycling:metal] {
1801 throwWarning: tr("{0} is deprecated", "{0.key}");
1802 suggestAlternative: "recycling:scrap_metal";
1803 group: tr("deprecated tagging");
1804 fixChangeKey: "recycling:metal => recycling:scrap_metal";
1805}
1806
1807/* #18154 */
1808*[shop=dog_grooming] {
1809 throwWarning: tr("{0} is deprecated", "{0.tag}");
1810 suggestAlternative: "shop=pet_grooming";
1811 fixAdd: "shop=pet_grooming";
1812 group: tr("deprecated tagging");
1813}
1814
1815/* #17984, #19383 */
1816*[tower:type=anchor],
1817*[tower:type=suspension] {
1818 throwWarning: tr("{0} is deprecated", "{0.tag}");
1819 suggestAlternative: concat("line_attachment=", "{0.value}");
1820 fixChangeKey: "tower:type => line_attachment";
1821 set power_tower_type_warning;
1822 group: tr("deprecated tagging");
1823}
1824*[tower:type=branch][branch:type=split],
1825*[tower:type=branch][branch:type=loop] {
1826 throwWarning: tr("{0} is deprecated", "{0.tag}");
1827 suggestAlternative: "line_management=split";
1828 fixAdd: "line_management=split";
1829 fixRemove: "tower:type";
1830 fixRemove: "branch:type";
1831 set power_tower_type_warning;
1832 group: tr("deprecated tagging");
1833}
1834*[tower:type=branch][!branch:type],
1835*[tower:type=branch][branch:type=tap] {
1836 throwWarning: tr("{0} is deprecated", "{0.tag}");
1837 suggestAlternative: "line_management=branch";
1838 fixAdd: "line_management=branch";
1839 fixRemove: "tower:type";
1840 fixRemove: "branch:type";
1841 set power_tower_type_warning;
1842 group: tr("deprecated tagging");
1843}
1844*[tower:type=branch][branch:type=cross] {
1845 throwWarning: tr("{0} is deprecated", "{0.tag}");
1846 suggestAlternative: "line_management=cross";
1847 fixAdd: "line_management=cross";
1848 fixRemove: "tower:type";
1849 fixRemove: "branch:type";
1850 set power_tower_type_warning;
1851 group: tr("deprecated tagging");
1852}
1853*[tower:type=termination] {
1854 throwWarning: tr("{0} is deprecated", "{0.tag}");
1855 suggestAlternative: "line_management=termination";
1856 fixAdd: "line_management=termination";
1857 fixRemove: "tower:type";
1858 set power_tower_type_warning;
1859 group: tr("deprecated tagging");
1860}
1861*[tower:type=transition] {
1862 throwWarning: tr("{0} is deprecated", "{0.tag}");
1863 suggestAlternative: "location:transition=yes";
1864 fixAdd: "location:transition=yes";
1865 fixRemove: "tower:type";
1866 set power_tower_type_warning;
1867 group: tr("deprecated tagging");
1868}
1869*[tower:type=transposing] {
1870 throwWarning: tr("{0} is deprecated", "{0.tag}");
1871 suggestAlternative: "line_management=transpose";
1872 fixAdd: "line_management=transpose";
1873 fixRemove: "tower:type";
1874 set power_tower_type_warning;
1875 group: tr("deprecated tagging");
1876}
1877*[tower:type=crossing] {
1878 throwWarning: tr("{0} is deprecated", "{0.tag}");
1879 suggestAlternative: "height=* + design=*";
1880 set power_tower_type_warning;
1881 group: tr("deprecated tagging");
1882}
1883*[tower:type][power][power=~/^(tower|pole|insulator|portal|terminal)$/]!.power_tower_type_warning {
1884 throwWarning: tr("{0} is deprecated for {1}", "{0.key}", "{1.tag}");
1885 suggestAlternative: "design";
1886 suggestAlternative: "structure";
1887 suggestAlternative: "line_management";
1888 suggestAlternative: "line_attachment";
1889 set generic_power_tower_type_warning;
1890 group: tr("deprecated tagging");
1891}
1892node[pole:type=anchor],
1893node[pole:type=suspension] {
1894 throwWarning: tr("{0} is deprecated", "{0.tag}");
1895 suggestAlternative: concat("line_attachment=", "{0.value}");
1896 fixChangeKey: "pole:type => line_attachment";
1897 set power_pole_type_warning;
1898 group: tr("deprecated tagging");
1899}
1900node[pole:type=branch][branch:type=split],
1901node[pole:type=branch][branch:type=loop] {
1902 throwWarning: tr("{0} is deprecated", "{0.tag}");
1903 suggestAlternative: "line_management=split";
1904 fixAdd: "line_management=split";
1905 fixRemove: "pole:type";
1906 fixRemove: "branch:type";
1907 set power_pole_type_warning;
1908 group: tr("deprecated tagging");
1909}
1910node[pole:type=branch][!branch:type],
1911node[pole:type=branch][branch:type=tap] {
1912 throwWarning: tr("{0} is deprecated", "{0.tag}");
1913 suggestAlternative: "line_management=branch";
1914 fixAdd: "line_management=branch";
1915 fixRemove: "pole:type";
1916 fixRemove: "branch:type";
1917 set power_pole_type_warning;
1918 group: tr("deprecated tagging");
1919}
1920node[pole:type=branch][branch:type=cross] {
1921 throwWarning: tr("{0} is deprecated", "{0.tag}");
1922 suggestAlternative: "line_management=cross";
1923 fixAdd: "line_management=cross";
1924 fixRemove: "pole:type";
1925 fixRemove: "branch:type";
1926 set power_pole_type_warning;
1927 group: tr("deprecated tagging");
1928}
1929node[pole:type=termination] {
1930 throwWarning: tr("{0} is deprecated", "{0.tag}");
1931 suggestAlternative: "line_management=termination";
1932 fixAdd: "line_management=termination";
1933 fixRemove: "pole:type";
1934 set power_pole_type_warning;
1935 group: tr("deprecated tagging");
1936}
1937node[pole:type=transition] {
1938 throwWarning: tr("{0} is deprecated", "{0.tag}");
1939 suggestAlternative: "location:transition=yes";
1940 fixAdd: "location:transition=yes";
1941 fixRemove: "pole:type";
1942 set power_pole_type_warning;
1943 group: tr("deprecated tagging");
1944}
1945*[pole:type][power][power=~/^(tower|pole|insulator|portal|terminal)$/]!.power_pole_type_warning!.generic_power_tower_type_warning {
1946 throwWarning: tr("{0} is deprecated for {1}", "{0.key}", "{1.tag}");
1947 suggestAlternative: "line_management";
1948 suggestAlternative: "line_attachment";
1949 group: tr("deprecated tagging");
1950}
1951
1952/* #18267 */
1953node[man_made=pipeline_marker],
1954node[pipeline=marker],
1955node[power=marker],
1956node[cable=marker] {
1957 throwWarning: tr("{0} is deprecated", "{0.tag}");
1958 suggestAlternative: "marker=* + utility=*";
1959 group: tr("deprecated tagging");
1960}
1961
1962/* #17643 */
1963way[barrier=embankment] {
1964 throwWarning: tr("{0} is deprecated", "{0.tag}");
1965 suggestAlternative: "man_made=embankment";
1966 suggestAlternative: "embankment=yes";
1967 group: tr("deprecated tagging");
1968}
1969
1970/* #18469 */
1971way[landuse=churchyard] {
1972 throwWarning: tr("{0} is deprecated", "{0.tag}");
1973 suggestAlternative: "landuse=religious";
1974 suggestAlternative: "amenity=graveyard";
1975 group: tr("deprecated tagging");
1976}
1977
1978*[sloped_curb=yes][!kerb],
1979*[sloped_curb=both][!kerb] {
1980 throwWarning: tr("{0} is deprecated", "{0.tag}");
1981 suggestAlternative: "kerb=lowered";
1982 group: tr("deprecated tagging");
1983 fixRemove: "sloped_curb";
1984 fixAdd: "kerb=lowered";
1985}
1986*[sloped_curb=no][!kerb] {
1987 throwWarning: tr("{0} is deprecated", "{0.tag}");
1988 suggestAlternative: "kerb=yes";
1989 group: tr("deprecated tagging");
1990 fixRemove: "sloped_curb";
1991 fixAdd: "kerb=yes";
1992}
1993*[sloped_curb][sloped_curb !~ /^(yes|both|no)$/][!kerb],
1994*[sloped_curb][kerb] {
1995 throwWarning: tr("{0} is deprecated", "{0.key}");
1996 suggestAlternative: "kerb=*";
1997 group: tr("deprecated tagging");
1998}
1999
2000/* #18571 */
2001*[unnamed=yes] {
2002 throwWarning: tr("{0} is deprecated", "{0.tag}");
2003 suggestAlternative: "noname=yes";
2004 fixChangeKey: "unnamed => noname";
2005 group: tr("deprecated tagging");
2006}
2007
2008node[segregated][segregated!=yes][segregated!=no],
2009way[segregated ][segregated!=yes][segregated!=no] {
2010 throwWarning: tr("unusual value of {0}", "{0.key}");
2011}
2012
2013/* #18603 */
2014way[bicycle:oneway] {
2015 throwWarning: tr("{0} is deprecated", "{0.key}");
2016 suggestAlternative: "oneway:bicycle";
2017 fixChangeKey: "bicycle:oneway => oneway:bicycle";
2018 group: tr("deprecated tagging");
2019}
2020
2021/* #18605 */
2022*[building:height] {
2023 throwWarning: tr("{0} is deprecated", "{0.key}");
2024 suggestAlternative: "height";
2025 fixChangeKey: "building:height => height";
2026 group: tr("deprecated tagging");
2027}
2028*[building:min_height] {
2029 throwWarning: tr("{0} is deprecated", "{0.key}");
2030 suggestAlternative: "min_height";
2031 fixChangeKey: "building:min_height => min_height";
2032 group: tr("deprecated tagging");
2033}
2034
2035/* #11232 */
2036way[highway][construction=yes][highway!=construction] {
2037 throwWarning: tr("{0} is deprecated", "{1.tag}");
2038 suggestAlternative: "construction=minor";
2039 suggestAlternative: concat("highway=construction + construction=", "{0.value}");
2040 group: tr("deprecated tagging");
2041}
2042
2043/* #18659 */
2044*[car][amenity=charging_station] {
2045 throwWarning: tr("{0} is deprecated", "{0.key}");
2046 suggestAlternative: "motorcar";
2047 group: tr("deprecated tagging");
2048 fixChangeKey: "car => motorcar";
2049}
2050
2051/* #18767 */
2052*[navigationaid=approach_light],
2053*[navigationaid="ALS (Approach lighting system)"] {
2054 throwWarning: tr("{0} is deprecated", "{0.tag}");
2055 suggestAlternative: "navigationaid=als";
2056 group: tr("deprecated tagging");
2057 fixAdd: "navigationaid=als";
2058}
2059
2060/* #18819 */
2061node[exit_to] {
2062 throwWarning: tr("{0} is deprecated", "{0.key}");
2063 suggestAlternative: "destination";
2064 group: tr("deprecated tagging");
2065}
2066
2067/* #18951 */
2068*[water=riverbank][!natural] {
2069 throwWarning: tr("{0} is deprecated", "{0.tag}");
2070 suggestAlternative: "natural=water + water=river";
2071 group: tr("deprecated tagging");
2072 fixAdd: "water=river";
2073 fixAdd: "natural=water";
2074}
2075*[water=riverbank][natural] {
2076 throwWarning: tr("{0} is deprecated", "{0.tag}");
2077 suggestAlternative: "natural=water + water=river";
2078 group: tr("deprecated tagging");
2079}
2080
2081/* #21630 */
2082*[waterway=riverbank][!natural][!water],
2083*[waterway=riverbank][natural=water][!water],
2084*[waterway=riverbank][!natural][water=river],
2085*[waterway=riverbank][natural=water][water=river] {
2086 throwWarning: tr("{0} is deprecated", "{0.tag}");
2087 suggestAlternative: "natural=water + water=river";
2088 group: tr("deprecated tagging");
2089 fixAdd: "natural=water";
2090 fixAdd: "water=river";
2091 fixRemove: "waterway";
2092 assertMatch: "way waterway=riverbank";
2093 assertMatch: "way waterway=riverbank natural=water";
2094 assertMatch: "way waterway=riverbank water=river";
2095 assertMatch: "way waterway=riverbank natural=water water=river";
2096 assertNoMatch: "way waterway=riverbank natural=shingle";
2097 assertNoMatch: "way waterway=riverbank water=lake";
2098 assertNoMatch: "way waterway=riverbank natural=water water=lake";
2099 assertNoMatch: "way waterway=riverbank natural=shingle water=river";
2100}
2101*[waterway=riverbank][natural][natural!=water],
2102*[waterway=riverbank][water][water!=river] {
2103 throwWarning: tr("{0} is deprecated", "{0.tag}");
2104 suggestAlternative: "natural=water + water=river";
2105 group: tr("deprecated tagging");
2106 assertMatch: "way waterway=riverbank natural=shingle";
2107 assertMatch: "way waterway=riverbank water=lake";
2108 assertNoMatch: "way waterway=riverbank";
2109 assertNoMatch: "way waterway=riverbank natural=water";
2110 assertNoMatch: "way waterway=riverbank water=river";
2111 assertNoMatch: "way waterway=riverbank natural=water water=river";
2112}
2113
2114node[amenity=bench][capacity][!seats],
2115way[amenity=bench][capacity][!seats] {
2116 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
2117 suggestAlternative: "seats";
2118 group: tr("deprecated tagging");
2119 fixChangeKey: "capacity => seats";
2120}
2121node[amenity=bench][capacity][seats],
2122way[amenity=bench][capacity][seats] {
2123 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
2124 suggestAlternative: "seats";
2125 group: tr("deprecated tagging");
2126}
2127
2128/* #19396 */
2129way[stream=intermittent] {
2130 throwWarning: tr("{0} is deprecated", "{0.tag}");
2131 suggestAlternative: "intermittent=yes";
2132 suggestAlternative: "seasonal=yes";
2133 group: tr("deprecated tagging");
2134}
2135
2136*[shop=lamps] {
2137 throwWarning: tr("{0} is deprecated", "{0.tag}");
2138 suggestAlternative: "shop=lighting";
2139 group: tr("deprecated tagging");
2140 fixAdd: "shop=lighting";
2141}
2142
2143/* #19180 */
2144*[access=customer] {
2145 throwWarning: tr("{0} is deprecated", "{0.tag}");
2146 suggestAlternative: "access=customers";
2147 group: tr("deprecated tagging");
2148 fixAdd: "access=customers";
2149}
2150*[addr:inclusion=estimated] {
2151 throwWarning: tr("{0} is deprecated", "{0.tag}");
2152 suggestAlternative: "addr:inclusion=estimate";
2153 group: tr("deprecated tagging");
2154 fixAdd: "addr:inclusion=estimate";
2155}
2156*[building=apartment] {
2157 throwWarning: tr("{0} is deprecated", "{0.tag}");
2158 suggestAlternative: "building=apartments";
2159 group: tr("deprecated tagging");
2160 fixAdd: "building=apartments";
2161}
2162node[lamp_mount="bent mast"] {
2163 throwWarning: tr("{0} is deprecated", "{0.tag}");
2164 suggestAlternative: "lamp_mount=bent_mast";
2165 group: tr("deprecated tagging");
2166 fixAdd: "lamp_mount=bent_mast";
2167}
2168node[lamp_mount="straight mast"] {
2169 throwWarning: tr("{0} is deprecated", "{0.tag}");
2170 suggestAlternative: "lamp_mount=straight_mast";
2171 group: tr("deprecated tagging");
2172 fixAdd: "lamp_mount=straight_mast";
2173}
2174node[lamp_type=electrical] {
2175 throwWarning: tr("{0} is deprecated", "{0.tag}");
2176 suggestAlternative: "lamp_type=electric";
2177 group: tr("deprecated tagging");
2178 fixAdd: "lamp_type=electric";
2179}
2180*[generator:type=solar_photovoltaic_panels] {
2181 throwWarning: tr("{0} is deprecated", "{0.tag}");
2182 suggestAlternative: "generator:type=solar_photovoltaic_panel";
2183 group: tr("deprecated tagging");
2184 fixAdd: "generator:type=solar_photovoltaic_panel";
2185}
2186*[building=part] {
2187 throwWarning: tr("{0} is deprecated", "{0.tag}");
2188 suggestAlternative: "building:part=yes";
2189 group: tr("deprecated tagging");
2190 /* without autofix, it is not clear if a building or a building part is mapped */
2191}
2192
2193/* #19739 */
2194*[natural=sink_hole] {
2195 throwWarning: tr("{0} is deprecated", "{0.tag}");
2196 suggestAlternative: "natural=sinkhole";
2197 group: tr("deprecated tagging");
2198 fixAdd: "natural=sinkhole";
2199}
2200
2201/* #19782 */
2202*[climbing:grade:UIAA:min] {
2203 throwWarning: tr("{0} is deprecated", "{0.key}");
2204 suggestAlternative: "climbing:grade:uiaa:min";
2205 group: tr("deprecated tagging");
2206 fixChangeKey: "climbing:grade:UIAA:min => climbing:grade:uiaa:min";
2207}
2208*[climbing:grade:UIAA:max] {
2209 throwWarning: tr("{0} is deprecated", "{0.key}");
2210 suggestAlternative: "climbing:grade:uiaa:max";
2211 group: tr("deprecated tagging");
2212 fixChangeKey: "climbing:grade:UIAA:max => climbing:grade:uiaa:max";
2213}
2214*[climbing:grade:UIAA:mean] {
2215 throwWarning: tr("{0} is deprecated", "{0.key}");
2216 suggestAlternative: "climbing:grade:uiaa:mean";
2217 group: tr("deprecated tagging");
2218 fixChangeKey: "climbing:grade:UIAA:mean => climbing:grade:uiaa:mean";
2219}
2220*[climbing:grade:UIAA] {
2221 throwWarning: tr("{0} is deprecated", "{0.key}");
2222 suggestAlternative: "climbing:grade:uiaa";
2223 group: tr("deprecated tagging");
2224 fixChangeKey: "climbing:grade:UIAA => climbing:grade:uiaa";
2225}
2226
2227/* #19835 */
2228*[cuisine][cuisine =~ /^(?i)(bbq)$/] { /* single value cases with autofix */
2229 throwWarning: tr("{0} is deprecated", "{0.tag}");
2230 suggestAlternative: "cuisine=barbecue";
2231 group: tr("deprecated tagging");
2232 fixAdd: "cuisine=barbecue";
2233 set bbq_autofix;
2234 assertMatch: "way cuisine=bbq";
2235 assertMatch: "way cuisine=BBQ";
2236 assertNoMatch: "way cuisine=pizza;Bbq";
2237 assertNoMatch: "way cuisine=pizza;bbq";
2238 assertNoMatch: "way cuisine=bbq;pizza";
2239 assertNoMatch: "way cuisine=pasta;bbq;pizza";
2240 assertNoMatch: "way cuisine=korean_bbq";
2241 assertNoMatch: "way cuisine=korean_bbq;bbq";
2242}
2243*[cuisine =~ /(?i)(;bbq|bbq;)/][cuisine!~/(?i)(_bbq)/] { /* multi value cases without autofix */
2244 throwWarning: tr("{0} is deprecated", "cuisine=bbq");
2245 suggestAlternative: "cuisine=barbecue";
2246 group: tr("deprecated tagging");
2247 assertNoMatch: "way cuisine=bbq";
2248 assertNoMatch: "way cuisine=BBQ";
2249 assertMatch: "way cuisine=pizza;Bbq";
2250 assertMatch: "way cuisine=pizza;bbq";
2251 assertMatch: "way cuisine=bbq;pizza";
2252 assertMatch: "way cuisine=pasta;bbq;pizza";
2253 assertNoMatch: "way cuisine=korean_bbq";
2254 assertNoMatch: "way cuisine=korean_bbq;bbq"; /* corner case (mixed ; and _) not supported by these rules, probably not present in the osm database */
2255}
2256
2257/* #17498, #20392 */
2258way[cycleway=none],
2259way[cycleway:left=none],
2260way[cycleway:right=none],
2261way[shoulder=none] {
2262 throwWarning: tr("{0} is deprecated", "{0.tag}");
2263 suggestAlternative: concat("{0.key}", "=no");
2264 group: tr("deprecated tagging");
2265 fixAdd: concat("{0.key}", "=no");
2266}
2267
2268/* #17809 */
2269*[Fixme] {
2270 throwWarning: tr("{0} is deprecated", "{0.key}");
2271 suggestAlternative: "fixme";
2272 group: tr("deprecated tagging");
2273 fixChangeKey: "Fixme => fixme";
2274 assertMatch: "way Fixme=foo";
2275 assertNoMatch: "way fixme=foo";
2276 assertNoMatch: "way FIXME=foo";
2277}
2278
2279/* #20338 */
2280*[amenity=embassy] {
2281 throwWarning: tr("{0} is deprecated", "{0.tag}");
2282 suggestAlternative: "office=diplomatic + diplomatic=embassy";
2283 group: tr("deprecated tagging");
2284 fixAdd: "office=diplomatic";
2285 fixChangeKey: "amenity => diplomatic";
2286}
2287
2288/* #11019 */
2289*[service:bicycle:chaintool] {
2290 throwWarning: tr("{0} is deprecated", "{0.key}");
2291 suggestAlternative: "service:bicycle:chain_tool";
2292 group: tr("deprecated tagging");
2293 fixChangeKey: "service:bicycle:chaintool => service:bicycle:chain_tool";
2294}
2295
2296/* #20434 */
2297*[building:roof:shape] {
2298 throwWarning: tr("{0} is deprecated", "{0.key}");
2299 suggestAlternative: "roof:shape";
2300 group: tr("deprecated tagging");
2301 fixChangeKey: "building:roof:shape => roof:shape";
2302}
2303
2304/* #20530 */
2305*[man_made=pumping_rig][!pump_mechanism][!mechanical_driver][!mechanical_coupling] {
2306 throwWarning: tr("{0} is deprecated", "{0.tag}");
2307 suggestAlternative: "man_made=petroleum_well";
2308 suggestAlternative: "man_made=water_well";
2309 fixAdd: "pump_mechanism=piston";
2310 fixAdd: "mechanical_driver=combustion_engine";
2311 fixAdd: "mechanical_coupling=nodding_donkey";
2312 group: tr("deprecated tagging");
2313 set pumping_ring_no_mech;
2314}
2315*[man_made=pumping_rig]!.pumping_ring_no_mech {
2316 throwWarning: tr("{0} is deprecated", "{0.tag}");
2317 suggestAlternative: "man_made=petroleum_well";
2318 suggestAlternative: "man_made=water_well";
2319 group: tr("deprecated tagging");
2320}
2321*[pump:type=beam_pump][!pump_mechanism][!mechanical_driver][!mechanical_coupling] {
2322 throwWarning: tr("{0} is deprecated", "{0.tag}");
2323 suggestAlternative: "pump_mechanism";
2324 fixRemove: "pump:type";
2325 fixAdd: "pump_mechanism=piston";
2326 fixAdd: "mechanical_driver=combustion_engine";
2327 fixAdd: "mechanical_coupling=nodding_donkey";
2328 group: tr("deprecated tagging");
2329 set beam_pump_no_mech
2330}
2331*[pump:type]!.beam_pump_no_mech {
2332 throwWarning: tr("{0} is deprecated", "{0.tag}");
2333 suggestAlternative: "pump_mechanism";
2334 group: tr("deprecated tagging");
2335}
2336*[substance=heat] {
2337 throwWarning: tr("{0} is deprecated", "{0.tag}");
2338 suggestAlternative: "substance=hot_water";
2339 suggestAlternative: "substance=steam";
2340 group: tr("deprecated tagging");
2341}
2342
2343/* #20959 */
2344*[landuse=school] {
2345 throwWarning: tr("{0} is deprecated", "{0.tag}");
2346 suggestAlternative: "amenity=college";
2347 suggestAlternative: "amenity=school";
2348 suggestAlternative: "amenity=university";
2349 suggestAlternative: "landuse=education";
2350 group: tr("deprecated tagging");
2351}
2352
2353/* #21954 decoturf was added to JOSM presets in r8123 and replaced with acrylic in r18404 */
2354*[surface=decoturf] {
2355 throwWarning: tr("{0} is deprecated", "{0.tag}");
2356 suggestAlternative: "surface=acrylic";
2357 fixAdd: "surface=acrylic";
2358 group: tr("deprecated tagging");
2359}
2360
2361/* #20637 */
2362*[role] {
2363 throwWarning: tr("{0} as a tag on an object. Roles are specified in the relation members list instead.", "{0.tag}", "{0.key}");
2364 assertMatch: "node role=stop";
2365}
2366
2367/* #22120 */
2368*[school=entrance] {
2369 throwWarning: tr("{0} is deprecated", "{0.tag}");
2370 suggestAlternative: "entrance=yes";
2371 suggestAlternative: "entrance=main";
2372 group: tr("deprecated tagging");
2373}
2374
2375/* #21836 */
2376*[voltage-high],
2377*[voltage-low] {
2378 throwWarning: tr("{0} is deprecated", "{0.key}");
2379 suggestAlternative: "voltage:primary";
2380 suggestAlternative: "voltage:secondary";
2381 group: tr("deprecated tagging");
2382}
2383
2384/* #22335 */
2385*[toilet][!toilets] {
2386 throwWarning: tr("{0} is deprecated", "{0.key}");
2387 suggestAlternative: "toilets";
2388 group: tr("deprecated tagging");
2389 fixChangeKey: "toilet => toilets";
2390}
2391*[toilet][toilets] {
2392 throwWarning: tr("{0} is deprecated", "{0.key}");
2393 suggestAlternative: "toilets";
2394 group: tr("deprecated tagging");
2395}
2396
2397/* Replaced by type=connectivity */
2398*[type="turnlanes:turns"] {
2399 throwWarning: tr("{0} is deprecated", "{0.tag}");
2400 suggestAlternative: "type=connectivity";
2401 group: tr("deprecated tagging");
2402}
2403
2404/* temporary URLs, can be exteded to other websites and other keys e.g. "url" or "website", #22397 */
2405*[image][image=~/^https:\/\/westnordost.de\/p\//] {
2406 throwWarning: tr("{0} with a temporary URL which may be outdated very soon", "{0.key}");
2407 fixRemove: "{0.key}";
2408 assertMatch: "node image=https://westnordost.de/p/17484.jpg";
2409 assertNoMatch: "node image=https://web.archive.org/web/20220623215400/https://westnordost.de/p/97331.jpg";
2410 assertNoMatch: "node image=https://commons.wikimedia.org/wiki/File:2015-05-13_Basteibr%C3%BCcke-.jpg";
2411}
2412
2413/* When tags are deprecated they should be added to ignoretags.cfg too. */
Note: See TracBrowser for help on using the repository browser.