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

Last change on this file was 18736, checked in by taylor.smock, 11 days ago

Fix #22957: parking:orientation is deprecated (patch by Famlam and JeroenHoek)

parking:orientation was introduced by a proposal on 2020-11-28 (JeroenHoek was
one of the authors). parking:orientation was deprecated by a new proposal on
2022-12-08.

  • Property svn:eol-style set to native
File size: 77.3 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/* #22481 */
517*[building:level][!building:levels] {
518  throwWarning: tr("{0} is deprecated", "{0.key}");
519  suggestAlternative: "building:levels";
520  group: tr("deprecated tagging");
521  fixChangeKey: "building:level => building:levels";
522}
523*[building:level][building:levels] {
524  throwWarning: tr("{0} is deprecated", "{0.key}");
525  suggestAlternative: "building:levels";
526  group: tr("deprecated tagging");
527}
528
529/* #10691 */
530*[protected_class] {
531  throwWarning: tr("{0} is deprecated", "{0.key}");
532  suggestAlternative: "protect_class";
533  group: tr("deprecated tagging");
534  fixChangeKey: "protected_class => protect_class";
535}
536
537/* #11070 */
538*[kerb=unknown],
539*[lock=unknown],
540*[hide=unknown],
541*[shelter=unknown],
542*[access=unknown],
543*[capacity:parent=unknown],
544*[capacity:women=unknown],
545*[capacity:disabled=unknown],
546*[crossing=unknown],
547*[foot=unknown] {
548  throwWarning: tr("Unspecific tag {0}", "{0.tag}");
549}
550
551/* #11183 */
552*[sport=skiing] {
553  throwWarning: tr("Definition of {0} is unclear", "{0.tag}");
554  suggestAlternative: tr("{0} + {1} + {2}", "piste:type=*", "piste:difficulty=*", "piste:grooming=*");
555  group: tr("deprecated tagging");
556}
557
558/* #11223 */
559*[waterway=wadi] {
560  throwWarning: tr("{0} is deprecated", "{0.tag}");
561  suggestAlternative: "{0.key}=* + intermittent=yes";
562  suggestAlternative: "natural=valley";
563  group: tr("deprecated tagging");
564}
565
566/* #10346 */
567way[oneway=1] {
568  throwWarning: tr("{0} is deprecated", "{0.tag}");
569  suggestAlternative: "oneway=yes";
570  group: tr("deprecated tagging");
571  fixAdd: "oneway=yes";
572}
573
574/* #11329 */
575way[oneway=-1] {
576  throwWarning: tr("{0} is not recommended. Use the Reverse Ways function from the Tools menu.", "{0.tag}");
577}
578
579*[drinkable] {
580  throwWarning: tr("{0} is deprecated", "{0.key}");
581  suggestAlternative: "drinking_water";
582  group: tr("deprecated tagging");
583}
584
585/* #10329, #15877 */
586  /* simple key change */
587*[color][!colour] {
588  throwWarning: tr("{0} is deprecated", "{0.key}");
589  suggestAlternative: "colour";
590  group: tr("deprecated tagging");
591  fixChangeKey: "color => colour";
592  assertMatch: "way color=red";
593  assertNoMatch: "way color=red colour=red";
594}
595area[building:color][!building:colour] {
596  throwWarning: tr("{0} is deprecated", "{0.key}");
597  suggestAlternative: "building:colour";
598  group: tr("deprecated tagging");
599  fixChangeKey: "building:color => building:colour";
600  assertMatch: "way building:color=red";
601  assertNoMatch: "way building:color=red building:colour=red";
602}
603area[roof:color][!roof:colour] {
604  throwWarning: tr("{0} is deprecated", "{0.key}");
605  suggestAlternative: "roof:colour";
606  group: tr("deprecated tagging");
607  fixChangeKey: "roof:color => roof:colour";
608  assertMatch: "way roof:color=red";
609  assertNoMatch: "way roof:color=red roof:colour=red";
610}
611  /* both tags with same value, remove color */
612*[color][colour][color=*colour] {
613  throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
614  suggestAlternative: "colour";
615  group: tr("deprecated tagging");
616  set samecolor;
617  fixRemove: "color";
618  assertMatch: "way color=red colour=red";
619  assertNoMatch: "way color=red colour=green";
620}
621area[building:color][building:colour]["building:color"=*"building:colour"] {
622  throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
623  suggestAlternative: "building:colour";
624  group: tr("deprecated tagging");
625  set samebuildingcolor;
626  fixRemove: "building:color";
627  assertMatch: "way building:color=red building:colour=red";
628  assertNoMatch: "way building:color=red building:colour=green";
629}
630area[roof:color][roof:colour]["roof:color"=*"roof:colour"] {
631  throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
632  suggestAlternative: "roof:colour";
633  group: tr("deprecated tagging");
634  set sameroofcolor;
635  fixRemove: "roof:color";
636  assertMatch: "way roof:color=red roof:colour=red";
637  assertNoMatch: "way roof:color=red roof:colour=green";
638}
639  /* both tags with different values, no autofix */
640*[color][colour]!.samecolor {
641  throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
642  suggestAlternative: "colour";
643  group: tr("deprecated tagging");
644  assertNoMatch: "way color=red colour=red";
645  assertMatch: "way color=red colour=green";
646}
647*[building:color][building:colour]!.samebuildingcolor {
648  throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
649  suggestAlternative: "building:colour";
650  group: tr("deprecated tagging");
651  assertNoMatch: "way building:color=red building:colour=red";
652  assertMatch: "way building:color=red building:colour=green";
653}
654*[roof:color][roof:colour]!.sameroofcolor {
655  throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
656  suggestAlternative: "roof:colour";
657  group: tr("deprecated tagging");
658  assertNoMatch: "way roof:color=red roof:colour=red";
659  assertMatch: "way roof:color=red roof:colour=green";
660}
661/* further more universal checks, no autofix */
662/* gpxd:color has another warning in unnecessary.mapcss */ 
663*[/:color/][!building:color][!roof:color][!gpxd:color] {
664  throwWarning: tr("{0} is deprecated", "{0.key}");
665  suggestAlternative: ":colour";
666  group: tr("deprecated tagging");
667  assertNoMatch: "way color=red";
668  assertNoMatch: "way roof:color=grey";
669  assertMatch: "way cycleway:surface:color=grey";
670}
671*[/color:/]  {
672  throwWarning: tr("{0} is deprecated", "{0.key}");
673  suggestAlternative: "colour:";
674  group: tr("deprecated tagging");
675  assertNoMatch: "way color=red";
676  assertMatch: "way color:back=grey";
677}
678
679/* #11234 */
680*[/=|\+|\/|&|<|>|;|'|"|%|#|@|\\|,|\.|\{|\}|\?|\*|\^|\$/] {
681  throwWarning: tr("{0}", "{0.key}");
682  group: tr("key with uncommon character");
683}
684
685/* #11330, #18642 */
686*[/^.$/],
687node[/^..$/][!kp][!pk],
688way[/^..$/][route=ferry][!to],
689way[/^..$/][route!=ferry],
690relation[/^..$/][!to] {
691  throwWarning: tr("uncommon short key");
692  assertNoMatch: "relation to=Berlin";
693  assertMatch: "relation fo=bar";
694  assertMatch: "way to=bar";
695  assertNoMatch: "way to=Zuidschermer;Akersloot route=ferry";
696  assertMatch: "node fo=bar";
697  assertMatch: "node f=b";
698  assertNoMatch: "node kp=5"; /* already has a deprecated warning */
699  assertNoMatch: "node pk=7"; /* already has a deprecated warning */
700}
701
702/* #11439 */
703*[sport=hockey] {
704  throwWarning: tr("{0} is deprecated", "{0.tag}");
705  suggestAlternative: "sport=field_hockey";
706  suggestAlternative: "sport=ice_hockey";
707  group: tr("deprecated tagging");
708}
709
710/* #11471 */
711*[sport=billard],
712*[sport=billards],
713*[sport=billiard] {
714  throwWarning: tr("{0} is deprecated", "{0.tag}");
715  suggestAlternative: "sport=billiards";
716  group: tr("deprecated tagging");
717  fixAdd: "sport=billiards";
718}
719
720/* #11499, #16928, #22367 */
721*[payment:electronic_purses=yes] {
722  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");
723}
724*[payment:cryptocurrencies=yes] {
725  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");
726}
727
728/* #16253 */
729*[payment:ep_quick],
730*[payment:ep_cash],
731*[payment:ep_proton],
732*[payment:ep_chipknip] {
733  throwWarning: tr("{0} is deprecated", "{0.key}");
734  group: tr("deprecated tagging");
735  fixRemove: "{0.key}";
736}
737
738/* #8717, #20326 */
739*[kp][railway!=milestone] {
740  throwWarning: tr("{0} is deprecated", "{0.key}");
741  suggestAlternative: "distance";
742  group: tr("deprecated tagging");
743  fixChangeKey: "kp => distance";
744}
745*[pk][railway!=milestone] {
746  throwWarning: tr("{0} is deprecated", "{0.key}");
747  suggestAlternative: "distance";
748  group: tr("deprecated tagging");
749  fixChangeKey: "pk => distance";
750}
751*[kp][railway=milestone] {
752  throwWarning: tr("{0} is deprecated", "{0.key}");
753  suggestAlternative: "railway:position";
754  group: tr("deprecated tagging");
755  fixChangeKey: "kp => railway:position";
756}
757*[pk][railway=milestone] {
758  throwWarning: tr("{0} is deprecated", "{0.key}");
759  suggestAlternative: "railway:position";
760  group: tr("deprecated tagging");
761  fixChangeKey: "pk => railway:position";
762}
763*[distance][railway=milestone] {
764  throwWarning: tr("{0} is deprecated for {1}", "{0.key}", "{1.tag}");
765  suggestAlternative: "railway:position";
766  group: tr("deprecated tagging");
767  fixChangeKey: "distance => railway:position";
768}
769
770*[postcode] {
771  throwWarning: tr("{0} is deprecated", "{0.key}");
772  suggestAlternative: "addr:postcode";
773  group: tr("deprecated tagging");
774  suggestAlternative: "postal_code";
775}
776
777*[water=intermittent] {
778  throwWarning: tr("{0} is deprecated", "{0.tag}");
779  suggestAlternative: "intermittent=yes";
780  group: tr("deprecated tagging");
781  fixRemove: "water";
782  fixAdd: "intermittent=yes";
783}
784
785/* #10907, #14141 */
786/* 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 */
787way[type][type!=waterway][man_made=pipeline],
788node[type][pipeline=marker] {
789  throwWarning: tr("{0} is deprecated", "{0.key}");
790  suggestAlternative: "substance";
791  group: tr("deprecated tagging");
792  fixChangeKey: "type => substance";
793}
794
795*[landuse=farm] {
796  throwWarning: tr("{0} is deprecated", "{0.tag}");
797  suggestAlternative: "landuse=farmland";
798  suggestAlternative: "landuse=farmyard";
799  group: tr("deprecated tagging");
800}
801
802/* #12135 comment:11 */
803*[seamark=buoy]["seamark:type"=~/^(buoy_cardinal|buoy_installation|buoy_isolated_danger|buoy_lateral|buoy_safe_water|buoy_special_purpose|mooring)$/] {
804  throwWarning: tr("{0} is deprecated", "{0.tag}");
805  suggestAlternative: "{1.tag}";
806  group: tr("deprecated tagging");
807  fixRemove: "seamark";
808}
809*[seamark=buoy]["seamark:type"!~/^(buoy_cardinal|buoy_installation|buoy_isolated_danger|buoy_lateral|buoy_safe_water|buoy_special_purpose|mooring)$/] {
810  throwWarning: tr("{0} is deprecated", "{0.tag}");
811  suggestAlternative: "{1.tag}";
812  group: tr("deprecated tagging");
813}
814/* #12135 */
815*[landuse=conservation] {
816  throwWarning: tr("{0} is deprecated", "{0.tag}");
817  suggestAlternative: "boundary=protected_area";
818  group: tr("deprecated tagging");
819  fixAdd: "boundary=protected_area";
820  fixRemove: "landuse";
821}
822
823/* #12205 */
824*[amenity=kiosk] {
825  throwWarning: tr("{0} is deprecated", "{0.tag}");
826  suggestAlternative: "shop=kiosk";
827  group: tr("deprecated tagging");
828  fixChangeKey: "amenity => shop";
829}
830*[amenity=shop] {
831  throwWarning: tr("{0} is deprecated", "{0.tag}");
832  suggestAlternative: "shop=*";
833  group: tr("deprecated tagging");
834}
835*[shop=fishmonger] {
836  throwWarning: tr("{0} is deprecated", "{0.tag}");
837  suggestAlternative: "shop=seafood";
838  group: tr("deprecated tagging");
839  fixAdd: "shop=seafood";
840}
841*[shop=fish] {
842  throwWarning: tr("{0} is deprecated", "{0.tag}");
843  suggestAlternative: "shop=seafood";
844  suggestAlternative: "shop=pet";
845  suggestAlternative: "shop=fishing";
846  group: tr("deprecated tagging");
847}
848*[shop=betting] {
849  throwWarning: tr("{0} is deprecated", "{0.tag}");
850  suggestAlternative: "shop=bookmaker";
851  suggestAlternative: "shop=lottery";
852  suggestAlternative: "amenity=casino";
853  suggestAlternative: "leisure=amusement_arcade";
854  suggestAlternative: "leisure=adult_gaming_centre";
855  suggestAlternative: "amenity=gambling";
856  group: tr("deprecated tagging");
857}
858*[shop=perfume] {
859  throwWarning: tr("{0} is deprecated", "{0.tag}");
860  suggestAlternative: "shop=perfumery";
861  group: tr("deprecated tagging");
862  fixAdd: "shop=perfumery";
863}
864*[amenity=exercise_point] {
865  throwWarning: tr("{0} is deprecated", "{0.tag}");
866  suggestAlternative: "leisure=fitness_station";
867  group: tr("deprecated tagging");
868  fixAdd: "leisure=fitness_station";
869  fixRemove: "amenity";
870}
871*[shop=auto_parts] {
872  throwWarning: tr("{0} is deprecated", "{0.tag}");
873  suggestAlternative: "shop=car_parts";
874  group: tr("deprecated tagging");
875  fixAdd: "shop=car_parts";
876}
877*[amenity=car_repair] {
878  throwWarning: tr("{0} is deprecated", "{0.tag}");
879  suggestAlternative: "shop=car_repair";
880  group: tr("deprecated tagging");
881  fixChangeKey: "amenity => shop";
882}
883
884/* #12311 */
885*[amenity=studio][type=audio],
886*[amenity=studio][type=radio],
887*[amenity=studio][type=television],
888*[amenity=studio][type=video] {
889  throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
890  suggestAlternative: "studio";
891  group: tr("deprecated tagging");
892  fixChangeKey: "type => studio";
893}
894
895/* #11507, #12297, #15409 */
896*[power=cable_distribution_cabinet] {
897  throwWarning: tr("{0} is deprecated", "{0.tag}");
898  suggestAlternative: "man_made=street_cabinet + street_cabinet=*";
899  group: tr("deprecated tagging");
900  fixAdd: "man_made=street_cabinet";
901  fixRemove: "power";
902}
903
904/* #16430 */
905*[power][location=kiosk] {
906  throwWarning: tr("{0} is deprecated", "{1.tag}");
907  group: tr("deprecated tagging");
908  fixAdd: "man_made=street_cabinet";
909  fixAdd: "street_cabinet=power";
910  fixRemove: "location";
911}
912
913/* #12276 */
914*[man_made=well] {
915  throwWarning: tr("{0} is deprecated", "{0.tag}");
916  suggestAlternative: "man_made=water_well";
917  suggestAlternative: "man_made=petroleum_well";
918  group: tr("deprecated tagging");
919}
920*[amenity=dog_bin],
921*[amenity=dog_waste_bin] {
922  throwWarning: tr("{0} is deprecated", "{0.tag}");
923  suggestAlternative: "amenity=waste_basket + waste=dog_excrement + vending=excrement_bags";
924  group: tr("deprecated tagging");
925  fixAdd: "amenity=waste_basket";
926  fixAdd: "waste=dog_excrement";
927  fixAdd: "vending=excrement_bags";
928}
929*[amenity=artwork] {
930  throwWarning: tr("{0} is deprecated", "{0.tag}");
931  suggestAlternative: "tourism=artwork";
932  group: tr("deprecated tagging");
933  fixAdd: "tourism=artwork";
934  fixRemove: "amenity";
935}
936*[amenity=community_center] {
937  throwWarning: tr("{0} is deprecated", "{0.tag}");
938  suggestAlternative: "amenity=community_centre";
939  group: tr("deprecated tagging");
940  fixAdd: "amenity=community_centre";
941}
942*[man_made=cut_line] {
943  throwWarning: tr("{0} is deprecated", "{0.tag}");
944  suggestAlternative: "man_made=cutline";
945  group: tr("deprecated tagging");
946  fixAdd: "man_made=cutline";
947}
948*[amenity=park] {
949  throwWarning: tr("{0} is deprecated", "{0.tag}");
950  suggestAlternative: "leisure=park";
951  group: tr("deprecated tagging");
952  fixAdd: "leisure=park";
953  fixRemove: "amenity";
954}
955*[amenity=hotel] {
956  throwWarning: tr("{0} is deprecated", "{0.tag}");
957  suggestAlternative: "tourism=hotel";
958  group: tr("deprecated tagging");
959  fixAdd: "tourism=hotel";
960  fixRemove: "amenity";
961}
962*[shop=window],
963*[shop=windows] {
964  throwWarning: tr("{0} is deprecated", "{0.tag}");
965  suggestAlternative: "craft=window_construction";
966  group: tr("deprecated tagging");
967  fixAdd: "craft=window_construction";
968  fixRemove: "shop";
969}
970*[amenity=education] {
971  throwWarning: tr("{0} is deprecated", "{0.tag}");
972  suggestAlternative: "amenity=college";
973  suggestAlternative: "amenity=school";
974  suggestAlternative: "amenity=university";
975  suggestAlternative: "landuse=education";
976  group: tr("deprecated tagging");
977}
978*[shop=gallery] {
979  throwWarning: tr("{0} is deprecated", "{0.tag}");
980  suggestAlternative: "shop=art";
981  group: tr("deprecated tagging");
982  fixAdd: "shop=art";
983}
984*[shop=gambling],
985*[leisure=gambling] {
986  throwWarning: tr("{0} is deprecated", "{0.tag}");
987  suggestAlternative: "shop=bookmaker";
988  suggestAlternative: "shop=lottery";
989  suggestAlternative: "amenity=casino";
990  suggestAlternative: "leisure=amusement_arcade";
991  suggestAlternative: "amenity=gambling";
992  group: tr("deprecated tagging");
993}
994*[office=real_estate],
995*[office=real_estate_agent] {
996  throwWarning: tr("{0} is deprecated", "{0.tag}");
997  suggestAlternative: "office=estate_agent";
998  group: tr("deprecated tagging");
999  fixAdd: "office=estate_agent";
1000}
1001*[shop=glass] {
1002  throwWarning: tr("{0} is deprecated", "{0.tag}");
1003  suggestAlternative: "shop=glaziery";
1004  suggestAlternative: "craft=glaziery";
1005  group: tr("deprecated tagging");
1006}
1007*[amenity=proposed],
1008*[amenity=disused],
1009*[shop=disused],
1010*[highway=abandoned],
1011*[historic=abandoned] {
1012  throwWarning: tr("{0} is deprecated. Use the {1}: key prefix instead.", "{0.tag}", "{0.value}");
1013  group: tr("deprecated tagging");
1014}
1015
1016/* #12431 */
1017*[amenity=swimming_pool] {
1018  throwWarning: tr("{0} is deprecated", "{0.tag}");
1019  suggestAlternative: "leisure=swimming_pool";
1020  group: tr("deprecated tagging");
1021  fixChangeKey: "amenity => leisure";
1022}
1023
1024/* #17379 */
1025*[amenity=sauna] {
1026  throwWarning: tr("{0} is deprecated", "{0.tag}");
1027  suggestAlternative: "leisure=sauna";
1028  group: tr("deprecated tagging");
1029  fixChangeKey: "amenity => leisure";
1030}
1031
1032/* #12494, #17554 */
1033*[/^[^t][^i][^g].+_[0-9]$/][!/^note_[0-9]$/][!/^description_[0-9]$/] {
1034  throwWarning: tr("{0}", "{0.key}");
1035  group: tr("questionable key (ending with a number)");
1036  assertMatch: "way name_1=foo";
1037  assertNoMatch: "way note_2=foo";
1038  assertNoMatch: "way description_3=foo";
1039  assertNoMatch: "way tiger:name_base_1=bar"; /*should not warn for key tiger:name_base_1 */
1040}
1041
1042/* #12500 */
1043*[sport=skating] {
1044  throwWarning: tr("{0} is deprecated", "{0.tag}");
1045  suggestAlternative: "sport=ice_skating";
1046  suggestAlternative: "sport=roller_skating";
1047  group: tr("deprecated tagging");
1048}
1049
1050way[barrier=wall][type=noise_barrier][!wall],
1051way[barrier=wall][type=noise_barrier][wall=noise_barrier] {
1052  throwWarning: tr("{0} is deprecated", "{1.tag}");
1053  suggestAlternative: "wall=noise_barrier";
1054  group: tr("deprecated tagging");
1055  fixChangeKey: "type => wall";
1056}
1057way[barrier=wall][type=noise_barrier][wall][wall!=noise_barrier] {
1058  throwWarning: tr("{0} is deprecated", "{1.tag}");
1059  suggestAlternative: "wall=noise_barrier";
1060  group: tr("deprecated tagging");
1061}
1062
1063/* #8978, 12588 */
1064*[amenity=public_building] {
1065  throwWarning: tr("{0} is deprecated", "{0.tag}");
1066  suggestAlternative: "amenity=townhall";
1067  suggestAlternative: "amenity=community_centre";
1068  suggestAlternative: "amenity=hospital";
1069  suggestAlternative: "leisure=sports_centre";
1070  suggestAlternative: "office=government";
1071  suggestAlternative: "building=hospital";
1072  suggestAlternative: "building=public";
1073  suggestAlternative: "...";
1074  group: tr("deprecated tagging");
1075}
1076
1077/* #18517 */
1078*[office=administrative] {
1079  throwWarning: tr("{0} is deprecated", "{0.tag}");
1080  suggestAlternative: "office=government";
1081  group: tr("deprecated tagging");
1082  fixAdd: "office=government";
1083}
1084
1085/* #12708 */
1086*[vending=news_papers] {
1087  throwWarning: tr("{0} is deprecated", "{0.tag}");
1088  suggestAlternative: "vending=newspapers";
1089  group: tr("deprecated tagging");
1090  fixAdd: "vending=newspapers";
1091}
1092
1093/* #12771 */
1094*[service=drive_through] {
1095  throwWarning: tr("{0} is deprecated", "{0.tag}");
1096  suggestAlternative: "service=drive-through";
1097  group: tr("deprecated tagging");
1098  fixAdd: "service=drive-through";
1099}
1100
1101/* #12771, #9895 */
1102*[noexit][noexit!=yes][noexit!=no], /* noexit=no has an own warning */
1103way[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 */
1104way[railway=rail][service][service !~ /^(crossover|siding|spur|yard)$/],
1105way[waterway=canal][service][service !~ /^(irrigation|transportation|water_power)$/] {
1106  throwWarning: tr("The key {0} has an uncommon value.", "{1.key}");
1107}
1108
1109/* #13008 */
1110*[name:botanical] {
1111  throwWarning: tr("{0} is deprecated", "{0.key}");
1112  suggestAlternative: "species";
1113  group: tr("deprecated tagging");
1114}
1115
1116/* #11344, #13101, #15480 */
1117node[pole=air_to_ground],
1118node[pole=transition] {
1119  throwWarning: tr("{0} is deprecated", "{0.tag}");
1120  suggestAlternative: "location:transition=yes";
1121  group: tr("deprecated tagging");
1122  fixAdd: "location:transition=yes";
1123  fixRemove: "pole";
1124}
1125node[tower=air_to_ground],
1126node[tower=transition] {
1127  throwWarning: tr("{0} is deprecated", "{0.tag}");
1128  suggestAlternative: "location:transition=yes";
1129  group: tr("deprecated tagging");
1130  fixAdd: "location:transition=yes";
1131  fixRemove: "tower";
1132}
1133
1134/* #13138 */
1135area[landuse=pond] {
1136  throwWarning: tr("{0} is deprecated", "{0.tag}");
1137  suggestAlternative: "natural=water + water=pond";
1138  group: tr("deprecated tagging");
1139  fixAdd: "natural=water";
1140  fixAdd: "water=pond";
1141  fixRemove: "landuse";
1142}
1143
1144*[shop=souvenir],
1145*[shop=souvenirs],
1146*[shop=souveniers] {
1147  throwWarning: tr("{0} is deprecated", "{0.tag}");
1148  suggestAlternative: "shop=gift";
1149  group: tr("deprecated tagging");
1150  fixAdd: "shop=gift";
1151}
1152
1153*[vending=animal_food] {
1154  throwWarning: tr("{0} is deprecated", "{0.tag}");
1155  suggestAlternative: "vending=animal_feed";
1156  group: tr("deprecated tagging");
1157  fixAdd: "vending=animal_feed";
1158}
1159
1160/* #14376 */
1161node[vending=photos][amenity=vending_machine],
1162node[vending=photo][amenity=vending_machine] {
1163  throwWarning: tr("{0} is deprecated", "{0.tag}");
1164  suggestAlternative: "amenity=photo_booth";
1165  group: tr("deprecated tagging");
1166  fixRemove: "vending";
1167  fixAdd: "amenity=photo_booth";
1168
1169}
1170node[vending=photos][amenity!=vending_machine] {
1171  throwWarning: tr("{0} is deprecated", "{0.tag}");
1172  suggestAlternative: "amenity=photo_booth";
1173  group: tr("deprecated tagging");
1174}
1175
1176/* #13653 */
1177node[highway=emergency_access_point][phone][!emergency_telephone_code],
1178way[highway=emergency_access_point][phone][!emergency_telephone_code] {
1179  throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1180  suggestAlternative: "emergency_telephone_code";
1181  group: tr("deprecated tagging");
1182  fixChangeKey: "phone => emergency_telephone_code";
1183  assertMatch:   "node highway=emergency_access_point phone=123";
1184  assertNoMatch: "node highway=emergency_access_point emergency_telephone_code=456";
1185  assertNoMatch: "node highway=emergency_access_point phone=123 emergency_telephone_code=456";
1186  assertNoMatch: "node phone=123";
1187}
1188node[highway=emergency_access_point][phone=*emergency_telephone_code],
1189way[highway=emergency_access_point][phone=*emergency_telephone_code] {
1190  throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1191  suggestAlternative: "emergency_telephone_code";
1192  group: tr("deprecated tagging");
1193  fixRemove: "phone";
1194  assertNoMatch: "node highway=emergency_access_point phone=123";
1195  assertNoMatch: "node highway=emergency_access_point emergency_telephone_code=123";
1196  assertMatch:   "node highway=emergency_access_point phone=123 emergency_telephone_code=123";
1197}
1198node[highway=emergency_access_point][phone][emergency_telephone_code][phone!=*emergency_telephone_code],
1199way[highway=emergency_access_point][phone][emergency_telephone_code][phone!=*emergency_telephone_code] {
1200  throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1201  suggestAlternative: "emergency_telephone_code";
1202  group: tr("deprecated tagging");
1203  assertNoMatch: "node highway=emergency_access_point phone=123";
1204  assertNoMatch: "node highway=emergency_access_point emergency_telephone_code=123";
1205  assertNoMatch: "node highway=emergency_access_point phone=123 emergency_telephone_code=123";
1206}
1207
1208/* #13879 */
1209way[tracktype=1] {
1210  throwError: tr("{0}", "{0.tag}");
1211  suggestAlternative: "tracktype=grade1";
1212  group: tr("misspelled value");
1213  fixAdd: "tracktype=grade1";
1214}
1215way[tracktype=2] {
1216  throwError: tr("{0}", "{0.tag}");
1217  suggestAlternative: "tracktype=grade2";
1218  group: tr("misspelled value");
1219  fixAdd: "tracktype=grade2";
1220}
1221way[tracktype=3] {
1222  throwError: tr("{0}", "{0.tag}");
1223  suggestAlternative: "tracktype=grade3";
1224  group: tr("misspelled value");
1225  fixAdd: "tracktype=grade3";
1226}
1227way[tracktype=4] {
1228  throwError: tr("{0}", "{0.tag}");
1229  suggestAlternative: "tracktype=grade4";
1230  group: tr("misspelled value");
1231  fixAdd: "tracktype=grade4";
1232}
1233way[tracktype=5] {
1234  throwError: tr("{0}", "{0.tag}");
1235  suggestAlternative: "tracktype=grade5";
1236  group: tr("misspelled value");
1237  fixAdd: "tracktype=grade5";
1238}
1239way[tracktype][tracktype!~/^(1|2|3|4|5|grade1|grade2|grade3|grade4|grade5)$/] {
1240  throwError: tr("wrong value: {0}", "{0.tag}");
1241  suggestAlternative: "tracktype=grade1";
1242  suggestAlternative: "tracktype=grade2";
1243  suggestAlternative: "tracktype=grade3";
1244  suggestAlternative: "tracktype=grade4";
1245  suggestAlternative: "tracktype=grade5";
1246}
1247
1248area[area][area!=yes][area!=no] {
1249  throwError: tr("wrong value: {0}", "{0.tag}");
1250  suggestAlternative: "area=yes";
1251  suggestAlternative: "area=no";
1252}
1253
1254/* #13953 */
1255*[amenity=hunting_stand][lock=yes],
1256*[amenity=hunting_stand][lock=no] {
1257  throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1258  suggestAlternative: "lockable";
1259  group: tr("deprecated tagging");
1260  fixChangeKey: "lock => lockable";
1261}
1262
1263*[amenity=advertising][!advertising] {
1264  throwWarning: tr("{0} is deprecated", "{0.tag}");
1265  suggestAlternative: "advertising=*";
1266  group: tr("deprecated tagging");
1267}
1268*[amenity=advertising][advertising] {
1269  throwWarning: tr("{0} is deprecated", "{0.tag}");
1270  suggestAlternative: "advertising=*";
1271  group: tr("deprecated tagging");
1272  fixRemove: "amenity";
1273}
1274
1275way[direction=up][incline=up],
1276way[direction=down][incline=down],
1277way[direction=up][!incline],
1278way[direction=down][!incline] {
1279  throwWarning: tr("{0} is deprecated", "{0.tag}");
1280  suggestAlternative: "incline";
1281  group: tr("deprecated tagging");
1282  fixChangeKey: "direction => incline";
1283}
1284way[direction=up][incline][incline!=up],
1285way[direction=down][incline][incline!=down] {
1286  throwWarning: tr("{0} is deprecated", "{0.tag}");
1287  suggestAlternative: "incline";
1288  group: tr("deprecated tagging");
1289}
1290
1291*[building=true],
1292*[building="*"],
1293*[building=Y],
1294*[building=y],
1295*[building=1] {
1296  throwError: tr("{0}", "{0.tag}");
1297  suggestAlternative: "building=yes";
1298  group: tr("misspelled value");
1299  fixAdd: "building=yes";
1300}
1301
1302/* #17786, #18612 */
1303*[building=abandoned],
1304*[building=address],
1305*[building=bing],
1306*[building=collapsed],
1307*[building=damaged],
1308*[building=demolished],
1309*[building=disused],
1310*[building=fixme],
1311*[building=occupied],
1312*[building=razed] {
1313  throwWarning: tr("{0} is not a building type.", "{0.tag}");
1314  group: tr("deprecated tagging");
1315}
1316*[building=other],
1317*[building=unclassified],
1318*[building=undefined],
1319*[building=unknown],
1320*[building=unidentified] {
1321  throwWarning: tr("{0} is not a building type.", "{0.tag}");
1322  group: tr("deprecated tagging");
1323  fixAdd: "building=yes";
1324}
1325
1326/* #15675 */
1327node[power=transformer][location=pole][transformer] {
1328  throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
1329  group: tr("deprecated tagging");
1330  fixChangeKey: "location => power";
1331}
1332node[power=transformer][location=pole][!transformer] {
1333  throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
1334  group: tr("deprecated tagging");
1335  fixChangeKey: "location => power";
1336  fixAdd: "transformer=yes";
1337}
1338
1339node[tourism=picnic_table],
1340node[amenity=picnic_table],
1341node[leisure=picnic],
1342node[leisure=picnic_site] {
1343  throwWarning: tr("{0} is deprecated", "{0.tag}");
1344  suggestAlternative: "tourism=picnic_site";
1345  suggestAlternative: "leisure=picnic_table";
1346  group: tr("deprecated tagging");
1347}
1348
1349/* #15804 */
1350relation[water=salt],
1351way[water=salt],
1352way[water=salt_pool],
1353way[water=salt_panne],
1354way[water=salt_pond] {
1355  throwWarning: tr("{0} is deprecated", "{0.tag}");
1356  suggestAlternative: "salt=yes";
1357  suggestAlternative: "landuse=salt_pond";
1358  group: tr("deprecated tagging");
1359}
1360
1361/* #15805 */
1362way[water=tidal] {
1363  throwWarning: tr("{0} is deprecated", "{0.tag}");
1364  suggestAlternative: "tidal=yes";
1365  fixAdd: "tidal=yes";
1366  fixRemove: "water";
1367  group: tr("deprecated tagging");
1368}
1369
1370*[amenity=toilet] {
1371  throwError: tr("{0}", "{0.tag}");
1372  suggestAlternative: "amenity=toilets";
1373  group: tr("misspelled value");
1374  fixAdd: "amenity=toilets";
1375}
1376
1377way[power=busbar] {
1378  throwWarning: tr("{0} is deprecated", "{0.tag}");
1379  suggestAlternative: "power=line + line=busbar";
1380  group: tr("deprecated tagging");
1381  fixAdd: "power=line";
1382  fixAdd: "line=busbar";
1383}
1384
1385/* #16924 */
1386*[man_made=MDF],
1387*[man_made=telephone_exchange] {
1388  throwWarning: tr("{0} is deprecated", "{0.tag}");
1389  suggestAlternative: "telecom=exchange";
1390  fixAdd: "telecom=exchange";
1391  fixRemove: "man_made";
1392  group: tr("deprecated tagging");
1393}
1394*[building=central_office] {
1395  throwWarning: tr("{0} is deprecated", "{0.tag}");
1396  suggestAlternative: "telecom=exchange";
1397  fixAdd: "telecom=exchange";
1398  fixAdd: "building=yes";
1399  group: tr("deprecated tagging");
1400}
1401*[telecom=central_office] {
1402  throwWarning: tr("{0} is deprecated", "{0.tag}");
1403  suggestAlternative: "telecom=exchange";
1404  fixAdd: "telecom=exchange";
1405  group: tr("deprecated tagging");
1406}
1407
1408/* #16925 */
1409node[communication=outdoor_dslam],
1410node[man_made=outdoor_dslam],
1411node[street_cabinet=outdoor_dslam] {
1412  throwWarning: tr("{0} is deprecated", "{0.tag}");
1413  suggestAlternative: "telecom=service_device";
1414  fixAdd: "telecom=service_device";
1415  fixRemove: "{0.key}";
1416  group: tr("deprecated tagging");
1417}
1418node[telecom=dslam],
1419node[telecom=outdoor_dslam] {
1420  throwWarning: tr("{0} is deprecated", "{0.tag}");
1421  suggestAlternative: "telecom=service_device";
1422  fixAdd: "telecom=service_device";
1423  group: tr("deprecated tagging");
1424}
1425
1426/* #15774 */
1427node[amenity=fire_hydrant] {
1428  throwWarning: tr("{0} is deprecated", "{0.tag}");
1429  suggestAlternative: "emergency=fire_hydrant";
1430  fixChangeKey: "amenity => emergency";
1431  group: tr("deprecated tagging");
1432}
1433node[fire_hydrant:type=pond] {
1434  throwWarning: tr("{0} is deprecated", "{0.tag}");
1435  suggestAlternative: "water_source=pond";
1436  fixAdd: "water_source=pond";
1437  fixRemove: "{0.key}";
1438  group: tr("deprecated tagging");
1439}
1440node[fire_hydrant:flow_capacity] {
1441  throwWarning: tr("{0} is deprecated", "{0.key}");
1442  suggestAlternative: "flow_rate";
1443  group: tr("deprecated tagging");
1444}
1445node[emergency=fire_hydrant][in_service=no] {
1446  throwWarning: tr("{0} is deprecated", "{1.tag}");
1447  suggestAlternative: "disused:emergency=fire_hydrant";
1448  fixAdd: "disused:emergency=fire_hydrant";
1449  fixRemove: "{1.key}";
1450  fixRemove: "{0.key}";
1451  group: tr("deprecated tagging");
1452}
1453node[fire_hydrant:water_source] {
1454  throwWarning: tr("{0} is deprecated", "{0.key}");
1455  suggestAlternative: "water_source";
1456  fixChangeKey: "fire_hydrant:water_source => water_source";
1457  group: tr("deprecated tagging");
1458}
1459
1460/* #17383 */
1461*[natural=waterfall] {
1462  throwWarning: tr("{0} is deprecated", "{0.tag}");
1463  suggestAlternative: "waterway=waterfall";
1464  fixChangeKey: "natural => waterway";
1465  group: tr("deprecated tagging");
1466}
1467
1468/* #17249 */
1469*[religion=unitarian] {
1470  throwWarning: tr("{0} is deprecated", "{0.tag}");
1471  suggestAlternative: "religion=unitarian_universalist";
1472  fixAdd: "religion=unitarian_universalist";
1473  group: tr("deprecated tagging");
1474}
1475
1476*[shop=shopping_centre] {
1477  throwWarning: tr("{0} is deprecated", "{0.tag}");
1478  suggestAlternative: "shop=mall";
1479  fixAdd: "shop=mall";
1480  group: tr("deprecated tagging");
1481}
1482
1483/* #17504 */
1484*[is_in],
1485node[/^is_in:/],
1486way[/^is_in:/] {
1487  throwWarning: tr("{0} is deprecated", "{0.key}");
1488  group: tr("deprecated tagging");
1489  fixRemove: "{0.key}";
1490}
1491
1492/* #17593 */
1493*[sport=football] {
1494  throwWarning: tr("{0} is deprecated", "{0.tag}");
1495  suggestAlternative: "sport=soccer";
1496  suggestAlternative: "sport=american_football";
1497  suggestAlternative: "sport=australian_football";
1498  suggestAlternative: "sport=canadian_football";
1499  suggestAlternative: "sport=rugby_league";
1500  suggestAlternative: "sport=rugby_union";
1501  suggestAlternative: "sport=gaelic_games";
1502  group: tr("deprecated tagging");
1503}
1504
1505/* #17556 */
1506*[leisure=common] {
1507  throwWarning: tr("{0} is deprecated", "{0.tag}");
1508  suggestAlternative: "landuse=*";
1509  suggestAlternative: "leisure=*";
1510  suggestAlternative: "designation=common";
1511  group: tr("deprecated tagging");
1512}
1513
1514/* #17043 */
1515*[cuisine=vegan],
1516*[cuisine=vegetarian] {
1517  throwWarning: tr("{0} is deprecated", "{0.tag}");
1518  suggestAlternative: concat("diet:", "{0.value}", "=yes");
1519  suggestAlternative: concat("diet:", "{0.value}", "=only");
1520  group: tr("deprecated tagging");
1521}
1522
1523/* #17798 */
1524*[kitchen_hours] {
1525  throwWarning: tr("{0} is deprecated", "{0.key}");
1526  suggestAlternative: "opening_hours:kitchen";
1527  fixChangeKey: "kitchen_hours => opening_hours:kitchen";
1528  group: tr("deprecated tagging");
1529}
1530
1531/* #17681 */
1532*[shop=money_transfer] {
1533  throwWarning: tr("{0} is deprecated", "{0.tag}");
1534  suggestAlternative: "amenity=money_transfer";
1535  fixChangeKey: "shop => amenity";
1536  group: tr("deprecated tagging");
1537}
1538
1539*[contact:google_plus] {
1540  throwWarning: tr("{0} is deprecated", "{0.key}");
1541  fixRemove: "contact:google_plus";
1542  group: tr("deprecated tagging");
1543}
1544
1545/* #17370  */
1546*[amenity=garages],
1547*[amenity=garage] {
1548  throwWarning: tr("{0} is deprecated", "{0.tag}");
1549  suggestAlternative: concat("building=", "{0.value}");
1550  suggestAlternative: "landuse=garages";
1551  suggestAlternative: "amenity=parking + parking=garage_boxes";
1552  group: tr("deprecated tagging");
1553}
1554*[shop=winery],
1555*[amenity=winery] {
1556  throwWarning: tr("{0} is deprecated", "{0.tag}");
1557  suggestAlternative: "craft=winery";
1558  suggestAlternative: "shop=wine";
1559  group: tr("deprecated tagging");
1560}
1561*[amenity=youth_centre] {
1562  throwWarning: tr("{0} is deprecated", "{0.tag}");
1563  suggestAlternative: "amenity=community_centre + community_centre=youth_centre";
1564  fixAdd: "amenity=community_centre";
1565  fixAdd: "community_centre=youth_centre";
1566  group: tr("deprecated tagging");
1567}
1568*[building:type][building=yes],
1569*[building:type][!building] {
1570  throwWarning: tr("{0} is deprecated", "{0.key}");
1571  suggestAlternative: "building";
1572  group: tr("deprecated tagging");
1573  fixChangeKey: "building:type => building";
1574  assertMatch: "way building:type=church";
1575  assertMatch: "way building:type=church building=yes";
1576  assertNoMatch: "way building:type=church building=supermarket";
1577}
1578*[building:type][building][building!=yes] {
1579  throwWarning: tr("{0} is deprecated", "{0.key}");
1580  suggestAlternative: "building";
1581  group: tr("deprecated tagging");
1582  assertNoMatch: "way building:type=church";
1583  assertNoMatch: "way building:type=church building=yes";
1584  assertMatch: "way building:type=church building=supermarket";
1585}
1586*[escalator] {
1587  throwWarning: tr("{0} is deprecated", "{0.key}");
1588  suggestAlternative: "highway=steps + conveying=*";
1589  group: tr("deprecated tagging");
1590}
1591*[fenced] {
1592  throwWarning: tr("{0} is deprecated", "{0.key}");
1593  suggestAlternative: "barrier=fence";
1594  group: tr("deprecated tagging");
1595}
1596*[historic_name][!old_name] {
1597  throwWarning: tr("{0} is deprecated", "{0.key}");
1598  suggestAlternative: "old_name";
1599  group: tr("deprecated tagging");
1600  fixChangeKey: "historic_name => old_name";
1601}
1602*[historic_name][old_name] {
1603  throwWarning: tr("{0} is deprecated", "{0.key}");
1604  suggestAlternative: "old_name";
1605  group: tr("deprecated tagging");
1606}
1607*[landuse=field] {
1608  throwWarning: tr("{0} is deprecated", "{0.tag}");
1609  suggestAlternative: "landuse=farmland";
1610  group: tr("deprecated tagging");
1611  fixAdd: "landuse=farmland";
1612}
1613*[leisure=beach] {
1614  throwWarning: tr("{0} is deprecated", "{0.tag}");
1615  suggestAlternative: "natural=beach";
1616  suggestAlternative: "leisure=beach_resort";
1617  group: tr("deprecated tagging");
1618}
1619*[leisure=club] {
1620  throwWarning: tr("{0} is deprecated", "{0.tag}");
1621  suggestAlternative: "club=*";
1622  group: tr("deprecated tagging");
1623}
1624*[leisure=video_arcade] {
1625  throwWarning: tr("{0} is deprecated", "{0.tag}");
1626  suggestAlternative: "leisure=amusement_arcade";
1627  suggestAlternative: "leisure=adult_gaming_centre";
1628  group: tr("deprecated tagging");
1629}
1630*[man_made=jetty] {
1631  throwWarning: tr("{0} is deprecated", "{0.tag}");
1632  suggestAlternative: "man_made=pier";
1633  group: tr("deprecated tagging");
1634  fixAdd: "man_made=pier";
1635}
1636*[man_made=village_pump] {
1637  throwWarning: tr("{0} is deprecated", "{0.tag}");
1638  suggestAlternative: "man_made=water_well";
1639  group: tr("deprecated tagging");
1640  fixAdd: "man_made=water_well";
1641}
1642*[man_made=water_tank] {
1643  throwWarning: tr("{0} is deprecated", "{0.tag}");
1644  suggestAlternative: "man_made=storage_tank + content=water";
1645  group: tr("deprecated tagging");
1646  fixAdd: "man_made=storage_tank";
1647  fixAdd: "content=water";
1648}
1649*[natural=moor] {
1650  throwWarning: tr("{0} is deprecated", "{0.tag}");
1651  suggestAlternative: "natural=heath";
1652  suggestAlternative: "natural=scrub";
1653  suggestAlternative: "natural=grassland";
1654  suggestAlternative: "natural=wetland";
1655  suggestAlternative: "natural=fell";
1656  suggestAlternative: "natural=tundra";
1657  suggestAlternative: "landuse=meadow + meadow=agricultural";
1658  group: tr("deprecated tagging");
1659}
1660*[noexit=no][!fixme] {
1661  throwWarning: tr("{0} is deprecated", "{0.tag}");
1662  suggestAlternative: "fixme=continue";
1663  group: tr("deprecated tagging");
1664  fixAdd: "fixme=continue";
1665  fixRemove: "noexit";
1666}
1667*[noexit=no][fixme] {
1668  throwWarning: tr("{0} is deprecated", "{0.tag}");
1669  suggestAlternative: "fixme=continue";
1670  group: tr("deprecated tagging");
1671}
1672*[shop=dive] {
1673  throwWarning: tr("{0} is deprecated", "{0.tag}");
1674  suggestAlternative: "shop=scuba_diving";
1675  group: tr("deprecated tagging");
1676  fixAdd: "shop=scuba_diving";
1677}
1678*[shop=furnace] {
1679  throwWarning: tr("{0} is deprecated", "{0.tag}");
1680  suggestAlternative: "shop=fireplace";
1681  suggestAlternative: "craft=plumber";
1682  group: tr("deprecated tagging");
1683}
1684*[sport=paragliding] {
1685  throwWarning: tr("{0} is deprecated", "{0.tag}");
1686  suggestAlternative: "sport=free_flying";
1687  group: tr("deprecated tagging");
1688  fixAdd: "sport=free_flying";
1689}
1690*[tourism=bed_and_breakfast] {
1691  throwWarning: tr("{0} is deprecated", "{0.tag}");
1692  suggestAlternative: "tourism=guest_house + guest_house=bed_and_breakfast";
1693  group: tr("deprecated tagging");
1694  fixAdd: "tourism=guest_house";
1695  fixAdd: "guest_house=bed_and_breakfast";
1696}
1697
1698/* #17880 */
1699*[diaper=yes],
1700*[diaper=no] {
1701  throwWarning: tr("{0} is deprecated", "{0.tag}");
1702  suggestAlternative: concat("changing_table=", "{0.value}");
1703  group: tr("deprecated tagging");
1704  fixChangeKey: "diaper => changing_table";
1705  set diaper_checked;
1706}
1707*[diaper][diaper =~ /^[1-9][0-9]*$/] {
1708  throwWarning: tr("{0} is deprecated", "{0.tag}");
1709  suggestAlternative: concat("changing_table=yes + changing_table:count=", "{0.value}");
1710  group: tr("deprecated tagging");
1711  fixChangeKey: "diaper => changing_table:count";
1712  fixAdd: "changing_table=yes";
1713  set diaper_checked;
1714}
1715*[diaper=room] {
1716  throwWarning: tr("{0} is deprecated", "{0.tag}");
1717  suggestAlternative: "changing_table=room";
1718  suggestAlternative: "changing_table=dedicated_room";
1719  group: tr("deprecated tagging");
1720  set diaper_checked;
1721}
1722*[diaper]!.diaper_checked {
1723  throwWarning: tr("{0} is deprecated", "{0.key}");
1724  suggestAlternative: "changing_table";
1725  group: tr("deprecated tagging");
1726}
1727*[diaper:male=yes] {
1728  throwWarning: tr("{0} is deprecated", "{0.tag}");
1729  suggestAlternative: "changing_table:location=male_toilet";
1730  group: tr("deprecated tagging");
1731  fixAdd: "changing_table:location=male_toilet";
1732  fixRemove: "diaper:male";
1733  set diaper___checked;
1734}
1735*[diaper:female=yes] {
1736  throwWarning: tr("{0} is deprecated", "{0.tag}");
1737  suggestAlternative: "changing_table:location=female_toilet";
1738  group: tr("deprecated tagging");
1739  fixAdd: "changing_table:location=female_toilet";
1740  fixRemove: "diaper:female";
1741  set diaper___checked;
1742}
1743*[diaper:unisex=yes] {
1744  throwWarning: tr("{0} is deprecated", "{0.tag}");
1745  suggestAlternative: "changing_table:location=unisex_toilet";
1746  group: tr("deprecated tagging");
1747  fixAdd: "changing_table:location=unisex_toilet";
1748  fixRemove: "diaper:unisex";
1749  set diaper___checked;
1750}
1751*[diaper:wheelchair=yes],
1752*[diaper:wheelchair=no] {
1753  throwWarning: tr("{0} is deprecated", "{0.tag}");
1754  suggestAlternative: concat("changing_table:wheelchair=", "{0.value}");
1755  group: tr("deprecated tagging");
1756  fixChangeKey: "diaper:wheelchair => changing_table:wheelchair";
1757  set diaper___checked;
1758}
1759*[diaper:fee=yes],
1760*[diaper:fee=no] {
1761  throwWarning: tr("{0} is deprecated", "{0.tag}");
1762  suggestAlternative: concat("changing_table:fee=", "{0.value}");
1763  group: tr("deprecated tagging");
1764  fixChangeKey: "diaper:fee => changing_table:fee";
1765  set diaper___checked;
1766}
1767*[/^diaper:/]!.diaper___checked {
1768  throwWarning: tr("{0} is deprecated", "diaper:*");
1769  suggestAlternative: "changing_table:*";
1770  group: tr("deprecated tagging");
1771}
1772*[changing_table][changing_table!~/^(yes|no|limited)$/] {
1773  throwWarning: tr("wrong value: {0}", "{0.tag}");
1774  suggestAlternative: "changing_table=yes";
1775  suggestAlternative: "changing_table=no";
1776  suggestAlternative: "changing_table=limited";
1777}
1778
1779/* #17990 */
1780*[roof:shape=half_hipped] {
1781  throwWarning: tr("{0} is deprecated", "{0.tag}");
1782  suggestAlternative: "roof:shape=half-hipped";
1783  group: tr("deprecated tagging");
1784  fixAdd: "roof:shape=half-hipped";
1785}
1786
1787/* #18003 */
1788*[bridge_name] {
1789  throwWarning: tr("{0} is deprecated", "{0.key}");
1790  suggestAlternative: "bridge:name";
1791  group: tr("deprecated tagging");
1792  fixChangeKey: "bridge_name => bridge:name";
1793}
1794
1795/* #18007 */
1796*[access=public] {
1797  throwWarning: tr("{0} is deprecated", "{0.tag}");
1798  suggestAlternative: "access=yes";
1799  group: tr("deprecated tagging");
1800  fixAdd: "access=yes";
1801}
1802
1803/* #17330 */
1804*[crossing=island] {
1805  throwWarning: tr("{0} is deprecated", "{0.tag}");
1806  suggestAlternative: "crossing:island=yes";
1807  group: tr("deprecated tagging");
1808  fixRemove: "crossing";
1809  fixAdd: "crossing:island=yes";
1810}
1811
1812/* #18152 */
1813*[recycling:metal] {
1814  throwWarning: tr("{0} is deprecated", "{0.key}");
1815  suggestAlternative: "recycling:scrap_metal";
1816  group: tr("deprecated tagging");
1817  fixChangeKey: "recycling:metal => recycling:scrap_metal";
1818}
1819
1820/* #18154 */
1821*[shop=dog_grooming] {
1822  throwWarning: tr("{0} is deprecated", "{0.tag}");
1823  suggestAlternative: "shop=pet_grooming";
1824  fixAdd: "shop=pet_grooming";
1825  group: tr("deprecated tagging");
1826}
1827
1828/* #17984, #19383 */
1829*[tower:type=anchor],
1830*[tower:type=suspension] {
1831  throwWarning: tr("{0} is deprecated", "{0.tag}");
1832  suggestAlternative: concat("line_attachment=", "{0.value}");
1833  fixChangeKey: "tower:type => line_attachment";
1834  set power_tower_type_warning;
1835  group: tr("deprecated tagging");
1836}
1837*[tower:type=branch][branch:type=split],
1838*[tower:type=branch][branch:type=loop] {
1839  throwWarning: tr("{0} is deprecated", "{0.tag}");
1840  suggestAlternative: "line_management=split";
1841  fixAdd: "line_management=split";
1842  fixRemove: "tower:type";
1843  fixRemove: "branch:type";
1844  set power_tower_type_warning;
1845  group: tr("deprecated tagging");
1846}
1847*[tower:type=branch][!branch:type],
1848*[tower:type=branch][branch:type=tap] {
1849  throwWarning: tr("{0} is deprecated", "{0.tag}");
1850  suggestAlternative: "line_management=branch";
1851  fixAdd: "line_management=branch";
1852  fixRemove: "tower:type";
1853  fixRemove: "branch:type";
1854  set power_tower_type_warning;
1855  group: tr("deprecated tagging");
1856}
1857*[tower:type=branch][branch:type=cross] {
1858  throwWarning: tr("{0} is deprecated", "{0.tag}");
1859  suggestAlternative: "line_management=cross";
1860  fixAdd: "line_management=cross";
1861  fixRemove: "tower:type";
1862  fixRemove: "branch:type";
1863  set power_tower_type_warning;
1864  group: tr("deprecated tagging");
1865}
1866*[tower:type=termination] {
1867  throwWarning: tr("{0} is deprecated", "{0.tag}");
1868  suggestAlternative: "line_management=termination";
1869  fixAdd: "line_management=termination";
1870  fixRemove: "tower:type";
1871  set power_tower_type_warning;
1872  group: tr("deprecated tagging");
1873}
1874*[tower:type=transition] {
1875  throwWarning: tr("{0} is deprecated", "{0.tag}");
1876  suggestAlternative: "location:transition=yes";
1877  fixAdd: "location:transition=yes";
1878  fixRemove: "tower:type";
1879  set power_tower_type_warning;
1880  group: tr("deprecated tagging");
1881}
1882*[tower:type=transposing] {
1883  throwWarning: tr("{0} is deprecated", "{0.tag}");
1884  suggestAlternative: "line_management=transpose";
1885  fixAdd: "line_management=transpose";
1886  fixRemove: "tower:type";
1887  set power_tower_type_warning;
1888  group: tr("deprecated tagging");
1889}
1890*[tower:type=crossing] {
1891  throwWarning: tr("{0} is deprecated", "{0.tag}");
1892  suggestAlternative: "height=* + design=*";
1893  set power_tower_type_warning;
1894  group: tr("deprecated tagging");
1895}
1896*[tower:type][power][power=~/^(tower|pole|insulator|portal|terminal)$/]!.power_tower_type_warning {
1897  throwWarning: tr("{0} is deprecated for {1}", "{0.key}", "{1.tag}");
1898  suggestAlternative: "design";
1899  suggestAlternative: "structure";
1900  suggestAlternative: "line_management";
1901  suggestAlternative: "line_attachment";
1902  set generic_power_tower_type_warning;
1903  group: tr("deprecated tagging");
1904}
1905node[pole:type=anchor],
1906node[pole:type=suspension] {
1907  throwWarning: tr("{0} is deprecated", "{0.tag}");
1908  suggestAlternative: concat("line_attachment=", "{0.value}");
1909  fixChangeKey: "pole:type => line_attachment";
1910  set power_pole_type_warning;
1911  group: tr("deprecated tagging");
1912}
1913node[pole:type=branch][branch:type=split],
1914node[pole:type=branch][branch:type=loop] {
1915  throwWarning: tr("{0} is deprecated", "{0.tag}");
1916  suggestAlternative: "line_management=split";
1917  fixAdd: "line_management=split";
1918  fixRemove: "pole:type";
1919  fixRemove: "branch:type";
1920  set power_pole_type_warning;
1921  group: tr("deprecated tagging");
1922}
1923node[pole:type=branch][!branch:type],
1924node[pole:type=branch][branch:type=tap] {
1925  throwWarning: tr("{0} is deprecated", "{0.tag}");
1926  suggestAlternative: "line_management=branch";
1927  fixAdd: "line_management=branch";
1928  fixRemove: "pole:type";
1929  fixRemove: "branch:type";
1930  set power_pole_type_warning;
1931  group: tr("deprecated tagging");
1932}
1933node[pole:type=branch][branch:type=cross] {
1934  throwWarning: tr("{0} is deprecated", "{0.tag}");
1935  suggestAlternative: "line_management=cross";
1936  fixAdd: "line_management=cross";
1937  fixRemove: "pole:type";
1938  fixRemove: "branch:type";
1939  set power_pole_type_warning;
1940  group: tr("deprecated tagging");
1941}
1942node[pole:type=termination] {
1943  throwWarning: tr("{0} is deprecated", "{0.tag}");
1944  suggestAlternative: "line_management=termination";
1945  fixAdd: "line_management=termination";
1946  fixRemove: "pole:type";
1947  set power_pole_type_warning;
1948  group: tr("deprecated tagging");
1949}
1950node[pole:type=transition] {
1951  throwWarning: tr("{0} is deprecated", "{0.tag}");
1952  suggestAlternative: "location:transition=yes";
1953  fixAdd: "location:transition=yes";
1954  fixRemove: "pole:type";
1955  set power_pole_type_warning;
1956  group: tr("deprecated tagging");
1957}
1958*[pole:type][power][power=~/^(tower|pole|insulator|portal|terminal)$/]!.power_pole_type_warning!.generic_power_tower_type_warning {
1959  throwWarning: tr("{0} is deprecated for {1}", "{0.key}", "{1.tag}");
1960  suggestAlternative: "line_management";
1961  suggestAlternative: "line_attachment";
1962  group: tr("deprecated tagging");
1963}
1964
1965/* #18267 */
1966node[man_made=pipeline_marker],
1967node[pipeline=marker],
1968node[power=marker],
1969node[cable=marker] {
1970  throwWarning: tr("{0} is deprecated", "{0.tag}");
1971  suggestAlternative: "marker=* + utility=*";
1972  group: tr("deprecated tagging");
1973}
1974
1975/* #17643 */
1976way[barrier=embankment] {
1977  throwWarning: tr("{0} is deprecated", "{0.tag}");
1978  suggestAlternative: "man_made=embankment";
1979  suggestAlternative: "embankment=yes";
1980  group: tr("deprecated tagging");
1981}
1982
1983/* #18469 */
1984way[landuse=churchyard] {
1985  throwWarning: tr("{0} is deprecated", "{0.tag}");
1986  suggestAlternative: "landuse=religious";
1987  suggestAlternative: "amenity=graveyard";
1988  group: tr("deprecated tagging");
1989}
1990
1991*[sloped_curb=yes][!kerb],
1992*[sloped_curb=both][!kerb] {
1993  throwWarning: tr("{0} is deprecated", "{0.tag}");
1994  suggestAlternative: "kerb=lowered";
1995  group: tr("deprecated tagging");
1996  fixRemove: "sloped_curb";
1997  fixAdd: "kerb=lowered";
1998}
1999*[sloped_curb=no][!kerb] {
2000  throwWarning: tr("{0} is deprecated", "{0.tag}");
2001  suggestAlternative: "kerb=yes";
2002  group: tr("deprecated tagging");
2003  fixRemove: "sloped_curb";
2004  fixAdd: "kerb=yes";
2005}
2006*[sloped_curb][sloped_curb !~ /^(yes|both|no)$/][!kerb],
2007*[sloped_curb][kerb] {
2008  throwWarning: tr("{0} is deprecated", "{0.key}");
2009  suggestAlternative: "kerb=*";
2010  group: tr("deprecated tagging");
2011}
2012
2013/* #18571 */
2014*[unnamed=yes] {
2015  throwWarning: tr("{0} is deprecated", "{0.tag}");
2016  suggestAlternative: "noname=yes";
2017  fixChangeKey: "unnamed => noname";
2018  group: tr("deprecated tagging");
2019}
2020
2021node[segregated][segregated!=yes][segregated!=no],
2022way[segregated ][segregated!=yes][segregated!=no] {
2023  throwWarning: tr("unusual value of {0}", "{0.key}");
2024}
2025
2026/* #18603 */
2027way[bicycle:oneway] {
2028  throwWarning: tr("{0} is deprecated", "{0.key}");
2029  suggestAlternative: "oneway:bicycle";
2030  fixChangeKey: "bicycle:oneway => oneway:bicycle";
2031  group: tr("deprecated tagging");
2032}
2033
2034/* #18605 */
2035*[building:height] {
2036  throwWarning: tr("{0} is deprecated", "{0.key}");
2037  suggestAlternative: "height";
2038  fixChangeKey: "building:height => height";
2039  group: tr("deprecated tagging");
2040}
2041*[building:min_height] {
2042  throwWarning: tr("{0} is deprecated", "{0.key}");
2043  suggestAlternative: "min_height";
2044  fixChangeKey: "building:min_height => min_height";
2045  group: tr("deprecated tagging");
2046}
2047
2048/* #11232 */
2049way[highway][construction=yes][highway!=construction] {
2050  throwWarning: tr("{0} is deprecated", "{1.tag}");
2051  suggestAlternative: "construction=minor";
2052  suggestAlternative: concat("highway=construction + construction=", "{0.value}");
2053  group: tr("deprecated tagging");
2054}
2055
2056/* #18659, #20539 */
2057*[car] {
2058  throwWarning: tr("{0} is deprecated", "{0.key}");
2059  suggestAlternative: "motorcar";
2060  group: tr("deprecated tagging");
2061  fixChangeKey: "car => motorcar";
2062}
2063
2064/* #18767 */
2065*[navigationaid=approach_light],
2066*[navigationaid="ALS (Approach lighting system)"] {
2067  throwWarning: tr("{0} is deprecated", "{0.tag}");
2068  suggestAlternative: "navigationaid=als";
2069  group: tr("deprecated tagging");
2070  fixAdd: "navigationaid=als";
2071}
2072
2073/* #18819 */
2074node[exit_to] {
2075  throwWarning: tr("{0} is deprecated", "{0.key}");
2076  suggestAlternative: "destination";
2077  group: tr("deprecated tagging");
2078}
2079
2080/* #18951 */
2081*[water=riverbank][!natural] {
2082  throwWarning: tr("{0} is deprecated", "{0.tag}");
2083  suggestAlternative: "natural=water + water=river";
2084  group: tr("deprecated tagging");
2085  fixAdd: "water=river";
2086  fixAdd: "natural=water";
2087}
2088*[water=riverbank][natural] {
2089  throwWarning: tr("{0} is deprecated", "{0.tag}");
2090  suggestAlternative: "natural=water + water=river";
2091  group: tr("deprecated tagging");
2092}
2093
2094/* #21630 */
2095*[waterway=riverbank][!natural][!water],
2096*[waterway=riverbank][natural=water][!water],
2097*[waterway=riverbank][!natural][water=river],
2098*[waterway=riverbank][natural=water][water=river] {
2099  throwWarning: tr("{0} is deprecated", "{0.tag}");
2100  suggestAlternative: "natural=water + water=river";
2101  group: tr("deprecated tagging");
2102  fixAdd: "natural=water";
2103  fixAdd: "water=river";
2104  fixRemove: "waterway";
2105  assertMatch: "way waterway=riverbank";
2106  assertMatch: "way waterway=riverbank natural=water";
2107  assertMatch: "way waterway=riverbank water=river";
2108  assertMatch: "way waterway=riverbank natural=water water=river";
2109  assertNoMatch: "way waterway=riverbank natural=shingle";
2110  assertNoMatch: "way waterway=riverbank water=lake";
2111  assertNoMatch: "way waterway=riverbank natural=water water=lake";
2112  assertNoMatch: "way waterway=riverbank natural=shingle water=river";
2113}
2114*[waterway=riverbank][natural][natural!=water],
2115*[waterway=riverbank][water][water!=river] {
2116  throwWarning: tr("{0} is deprecated", "{0.tag}");
2117  suggestAlternative: "natural=water + water=river";
2118  group: tr("deprecated tagging");
2119  assertMatch: "way waterway=riverbank natural=shingle";
2120  assertMatch: "way waterway=riverbank water=lake";
2121  assertNoMatch: "way waterway=riverbank";
2122  assertNoMatch: "way waterway=riverbank natural=water";
2123  assertNoMatch: "way waterway=riverbank water=river";
2124  assertNoMatch: "way waterway=riverbank natural=water water=river";
2125}
2126
2127node[amenity=bench][capacity][!seats],
2128way[amenity=bench][capacity][!seats] {
2129  throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
2130  suggestAlternative: "seats";
2131  group: tr("deprecated tagging");
2132  fixChangeKey: "capacity => seats";
2133}
2134node[amenity=bench][capacity][seats],
2135way[amenity=bench][capacity][seats] {
2136  throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
2137  suggestAlternative: "seats";
2138  group: tr("deprecated tagging");
2139}
2140
2141/* #19396 */
2142way[stream=intermittent] {
2143  throwWarning: tr("{0} is deprecated", "{0.tag}");
2144  suggestAlternative: "intermittent=yes";
2145  suggestAlternative: "seasonal=yes";
2146  group: tr("deprecated tagging");
2147}
2148
2149*[shop=lamps] {
2150  throwWarning: tr("{0} is deprecated", "{0.tag}");
2151  suggestAlternative: "shop=lighting";
2152  group: tr("deprecated tagging");
2153  fixAdd: "shop=lighting";
2154}
2155
2156/* #19180 */
2157*[access=customer] {
2158  throwWarning: tr("{0} is deprecated", "{0.tag}");
2159  suggestAlternative: "access=customers";
2160  group: tr("deprecated tagging");
2161  fixAdd: "access=customers";
2162}
2163*[addr:inclusion=estimated] {
2164  throwWarning: tr("{0} is deprecated", "{0.tag}");
2165  suggestAlternative: "addr:inclusion=estimate";
2166  group: tr("deprecated tagging");
2167  fixAdd: "addr:inclusion=estimate";
2168}
2169*[building=apartment] {
2170  throwWarning: tr("{0} is deprecated", "{0.tag}");
2171  suggestAlternative: "building=apartments";
2172  group: tr("deprecated tagging");
2173  fixAdd: "building=apartments";
2174}
2175node[lamp_mount="bent mast"] {
2176  throwWarning: tr("{0} is deprecated", "{0.tag}");
2177  suggestAlternative: "lamp_mount=bent_mast";
2178  group: tr("deprecated tagging");
2179  fixAdd: "lamp_mount=bent_mast";
2180}
2181node[lamp_mount="straight mast"] {
2182  throwWarning: tr("{0} is deprecated", "{0.tag}");
2183  suggestAlternative: "lamp_mount=straight_mast";
2184  group: tr("deprecated tagging");
2185  fixAdd: "lamp_mount=straight_mast";
2186}
2187node[lamp_type=electrical] {
2188  throwWarning: tr("{0} is deprecated", "{0.tag}");
2189  suggestAlternative: "lamp_type=electric";
2190  group: tr("deprecated tagging");
2191  fixAdd: "lamp_type=electric";
2192}
2193*[generator:type=solar_photovoltaic_panels] {
2194  throwWarning: tr("{0} is deprecated", "{0.tag}");
2195  suggestAlternative: "generator:type=solar_photovoltaic_panel";
2196  group: tr("deprecated tagging");
2197  fixAdd: "generator:type=solar_photovoltaic_panel";
2198}
2199*[building=part] {
2200  throwWarning: tr("{0} is deprecated", "{0.tag}");
2201  suggestAlternative: "building:part=yes";
2202  group: tr("deprecated tagging");
2203  /* without autofix, it is not clear if a building or a building part is mapped */
2204}
2205
2206/* #19739 */
2207*[natural=sink_hole] {
2208  throwWarning: tr("{0} is deprecated", "{0.tag}");
2209  suggestAlternative: "natural=sinkhole";
2210  group: tr("deprecated tagging");
2211  fixAdd: "natural=sinkhole";
2212}
2213
2214/* #19782 */
2215*[climbing:grade:UIAA:min] {
2216  throwWarning: tr("{0} is deprecated", "{0.key}");
2217  suggestAlternative: "climbing:grade:uiaa:min";
2218  group: tr("deprecated tagging");
2219  fixChangeKey: "climbing:grade:UIAA:min => climbing:grade:uiaa:min";
2220}
2221*[climbing:grade:UIAA:max] {
2222  throwWarning: tr("{0} is deprecated", "{0.key}");
2223  suggestAlternative: "climbing:grade:uiaa:max";
2224  group: tr("deprecated tagging");
2225  fixChangeKey: "climbing:grade:UIAA:max => climbing:grade:uiaa:max";
2226}
2227*[climbing:grade:UIAA:mean] {
2228  throwWarning: tr("{0} is deprecated", "{0.key}");
2229  suggestAlternative: "climbing:grade:uiaa:mean";
2230  group: tr("deprecated tagging");
2231  fixChangeKey: "climbing:grade:UIAA:mean => climbing:grade:uiaa:mean";
2232}
2233*[climbing:grade:UIAA] {
2234  throwWarning: tr("{0} is deprecated", "{0.key}");
2235  suggestAlternative: "climbing:grade:uiaa";
2236  group: tr("deprecated tagging");
2237  fixChangeKey: "climbing:grade:UIAA => climbing:grade:uiaa";
2238}
2239
2240/* #19835 */
2241*[cuisine][cuisine =~ /^(?i)(bbq)$/] { /* single value cases with autofix */
2242  throwWarning: tr("{0} is deprecated", "{0.tag}");
2243  suggestAlternative: "cuisine=barbecue";
2244  group: tr("deprecated tagging");
2245  fixAdd: "cuisine=barbecue";
2246  set bbq_autofix;
2247  assertMatch: "way cuisine=bbq";
2248  assertMatch: "way cuisine=BBQ";
2249  assertNoMatch: "way cuisine=pizza;Bbq";
2250  assertNoMatch: "way cuisine=pizza;bbq";
2251  assertNoMatch: "way cuisine=bbq;pizza";
2252  assertNoMatch: "way cuisine=pasta;bbq;pizza";
2253  assertNoMatch: "way cuisine=korean_bbq";
2254  assertNoMatch: "way cuisine=korean_bbq;bbq";
2255}
2256*[cuisine =~ /(?i)(;bbq|bbq;)/][cuisine!~/(?i)(_bbq)/] { /* multi value cases without autofix */
2257  throwWarning: tr("{0} is deprecated", "cuisine=bbq");
2258  suggestAlternative: "cuisine=barbecue";
2259  group: tr("deprecated tagging");
2260  assertNoMatch: "way cuisine=bbq";
2261  assertNoMatch: "way cuisine=BBQ";
2262  assertMatch: "way cuisine=pizza;Bbq";
2263  assertMatch: "way cuisine=pizza;bbq";
2264  assertMatch: "way cuisine=bbq;pizza";
2265  assertMatch: "way cuisine=pasta;bbq;pizza";
2266  assertNoMatch: "way cuisine=korean_bbq";
2267  assertNoMatch: "way cuisine=korean_bbq;bbq"; /* corner case (mixed ; and _) not supported by these rules, probably not present in the osm database */
2268}
2269
2270/* #17498, #20392 */
2271way[cycleway=none],
2272way[cycleway:left=none],
2273way[cycleway:right=none],
2274way[shoulder=none] {
2275  throwWarning: tr("{0} is deprecated", "{0.tag}");
2276  suggestAlternative: concat("{0.key}", "=no");
2277  group: tr("deprecated tagging");
2278  fixAdd: concat("{0.key}", "=no");
2279}
2280
2281/* #17809 */
2282*[Fixme] {
2283  throwWarning: tr("{0} is deprecated", "{0.key}");
2284  suggestAlternative: "fixme";
2285  group: tr("deprecated tagging");
2286  fixChangeKey: "Fixme => fixme";
2287  assertMatch: "way Fixme=foo";
2288  assertNoMatch: "way fixme=foo";
2289  assertNoMatch: "way FIXME=foo";
2290}
2291
2292/* #20338 */
2293*[amenity=embassy] {
2294  throwWarning: tr("{0} is deprecated", "{0.tag}");
2295  suggestAlternative: "office=diplomatic + diplomatic=embassy";
2296  group: tr("deprecated tagging");
2297  fixAdd: "office=diplomatic";
2298  fixChangeKey: "amenity => diplomatic";
2299}
2300
2301/* #11019 */
2302*[service:bicycle:chaintool] {
2303  throwWarning: tr("{0} is deprecated", "{0.key}");
2304  suggestAlternative: "service:bicycle:chain_tool";
2305  group: tr("deprecated tagging");
2306  fixChangeKey: "service:bicycle:chaintool => service:bicycle:chain_tool";
2307}
2308
2309/* #20434 */
2310*[building:roof:shape] {
2311  throwWarning: tr("{0} is deprecated", "{0.key}");
2312  suggestAlternative: "roof:shape";
2313  group: tr("deprecated tagging");
2314  fixChangeKey: "building:roof:shape => roof:shape";
2315}
2316
2317/* #20530 */
2318*[man_made=pumping_rig][!pump_mechanism][!mechanical_driver][!mechanical_coupling] {
2319  throwWarning: tr("{0} is deprecated", "{0.tag}");
2320  suggestAlternative: "man_made=petroleum_well";
2321  suggestAlternative: "man_made=water_well";
2322  fixAdd: "pump_mechanism=piston";
2323  fixAdd: "mechanical_driver=combustion_engine";
2324  fixAdd: "mechanical_coupling=nodding_donkey";
2325  group: tr("deprecated tagging");
2326  set pumping_ring_no_mech;
2327}
2328*[man_made=pumping_rig]!.pumping_ring_no_mech {
2329  throwWarning: tr("{0} is deprecated", "{0.tag}");
2330  suggestAlternative: "man_made=petroleum_well";
2331  suggestAlternative: "man_made=water_well";
2332  group: tr("deprecated tagging");
2333}
2334*[pump:type=beam_pump][!pump_mechanism][!mechanical_driver][!mechanical_coupling] {
2335  throwWarning: tr("{0} is deprecated", "{0.tag}");
2336  suggestAlternative: "pump_mechanism";
2337  fixRemove: "pump:type";
2338  fixAdd: "pump_mechanism=piston";
2339  fixAdd: "mechanical_driver=combustion_engine";
2340  fixAdd: "mechanical_coupling=nodding_donkey";
2341  group: tr("deprecated tagging");
2342  set beam_pump_no_mech
2343}
2344*[pump:type]!.beam_pump_no_mech {
2345  throwWarning: tr("{0} is deprecated", "{0.tag}");
2346  suggestAlternative: "pump_mechanism";
2347  group: tr("deprecated tagging");
2348}
2349*[substance=heat] {
2350  throwWarning: tr("{0} is deprecated", "{0.tag}");
2351  suggestAlternative: "substance=hot_water";
2352  suggestAlternative: "substance=steam";
2353  group: tr("deprecated tagging");
2354}
2355
2356/* #20959 */
2357*[landuse=school] {
2358  throwWarning: tr("{0} is deprecated", "{0.tag}");
2359  suggestAlternative: "amenity=college";
2360  suggestAlternative: "amenity=school";
2361  suggestAlternative: "amenity=university";
2362  suggestAlternative: "landuse=education";
2363  group: tr("deprecated tagging");
2364}
2365
2366/* #21782 */
2367*[amenity=vending_machine][vending=parcel_mail_in],
2368*[amenity=vending_machine][vending=parcel_pickup] {
2369  set .parcel_fixable;
2370  throwWarning: tr("{0} is deprecated", "{1.tag}");
2371  suggestAlternative: "amenity=parcel_locker + {1.value}=yes";
2372  fixAdd: "amenity=parcel_locker";
2373  fixAdd: "{1.value}=yes";
2374  fixRemove: "vending";
2375  group: tr("deprecated tagging");
2376  assertMatch: "node amenity=vending_machine vending=parcel_mail_in";
2377  assertMatch: "node amenity=vending_machine vending=parcel_pickup";
2378}
2379*[amenity=vending_machine][vending][vending~=parcel_mail_in][vending~=parcel_pickup][count(uniq_list(split(";", tag("vending")))) == 2] {
2380  set .parcel_fixable;
2381  throwWarning: tr("{0} is deprecated", "{1.tag}");
2382  suggestAlternative: "amenity=parcel_locker + parcel_pickup=yes + parcel_mail_in=yes";
2383  fixAdd: "amenity=parcel_locker";
2384  fixAdd: "parcel_pickup=yes";
2385  fixAdd: "parcel_mail_in=yes";
2386  fixRemove: "vending";
2387  group: tr("deprecated tagging");
2388  assertMatch: "node amenity=vending_machine vending=parcel_mail_in;parcel_pickup";
2389  assertMatch: "node amenity=vending_machine vending=parcel_pickup;parcel_mail_in";
2390}
2391*[amenity=vending_machine][vending~=parcel_mail_in]!.parcel_fixable,
2392*[amenity=vending_machine][vending~=parcel_pickup]!.parcel_fixable {
2393  throwWarning: tr("{0} is deprecated", "{1.tag}");
2394  suggestAlternative: "amenity=parcel_locker + {1.value}=yes";
2395  assertMatch: "node amenity=vending_machine vending=parcel_pickup;stamp";
2396  group: tr("deprecated tagging");
2397}
2398
2399/* #21954 decoturf was added to JOSM presets in r8123 and replaced with acrylic in r18404 */
2400*[surface=decoturf] {
2401  throwWarning: tr("{0} is deprecated", "{0.tag}");
2402  suggestAlternative: "surface=acrylic";
2403  fixAdd: "surface=acrylic";
2404  group: tr("deprecated tagging");
2405}
2406
2407/* #20637 */
2408*[role] {
2409  throwWarning: tr("{0} as a tag on an object. Roles are specified in the relation members list instead.", "{0.tag}", "{0.key}");
2410  assertMatch: "node role=stop";
2411}
2412
2413/* #22120 */
2414*[school=entrance] {
2415  throwWarning: tr("{0} is deprecated", "{0.tag}");
2416  suggestAlternative: "entrance=yes";
2417  suggestAlternative: "entrance=main";
2418  group: tr("deprecated tagging");
2419}
2420
2421/* #21836 */
2422*[voltage-high],
2423*[voltage-low] {
2424  throwWarning: tr("{0} is deprecated", "{0.key}");
2425  suggestAlternative: "voltage:primary";
2426  suggestAlternative: "voltage:secondary";
2427  group: tr("deprecated tagging");
2428}
2429
2430/* #22335 */
2431*[toilet][!toilets] {
2432  throwWarning: tr("{0} is deprecated", "{0.key}");
2433  suggestAlternative: "toilets";
2434  group: tr("deprecated tagging");
2435  fixChangeKey: "toilet => toilets";
2436}
2437*[toilet][toilets] {
2438  throwWarning: tr("{0} is deprecated", "{0.key}");
2439  suggestAlternative: "toilets";
2440  group: tr("deprecated tagging");
2441}
2442
2443/* Replaced by type=connectivity */
2444*[type="turnlanes:turns"] {
2445  throwWarning: tr("{0} is deprecated", "{0.tag}");
2446  suggestAlternative: "type=connectivity";
2447  group: tr("deprecated tagging");
2448}
2449
2450/* temporary URLs, can be extended to other websites and other keys e.g. "url" or "website", #22397 */
2451*[image][image=~/^https:\/\/westnordost.de\/p\//] {
2452  throwWarning: tr("{0} with a temporary URL which may be outdated very soon", "{0.key}");
2453  fixRemove: "{0.key}";
2454  assertMatch: "node image=https://westnordost.de/p/17484.jpg";
2455  assertNoMatch: "node image=https://web.archive.org/web/20220623215400/https://westnordost.de/p/97331.jpg";
2456  assertNoMatch: "node image=https://commons.wikimedia.org/wiki/File:2015-05-13_Basteibr%C3%BCcke-.jpg";
2457}
2458
2459/* Replaced by archaeological_site, see #22561 */
2460*[historic=archaeological_site][site_type] {
2461  throwWarning: tr("{0} should be replaced with {1}", "{1.key}", "archaeological_site");
2462  fixChangeKey: "site_type => archaeological_site";
2463  assertMatch: "node historic=archaeological_site site_type=fortification";
2464  assertNoMatch: "node historic=archaeological_site site_type2=fortification";
2465}
2466
2467/* Tag was renamed, see #22957 */
2468area[parking:orientation][!orientation] {
2469  throwWarning: tr("{0} is deprecated", "{0.tag}");
2470  group: tr("deprecated tagging");
2471  suggestAlternative: "{1.key}={0.value}";
2472  fixChangeKey: "{0.key} => {1.key}";
2473}
2474area[parking:orientation][orientation]["parking:orientation"=*orientation] {
2475  throwWarning: tr("{0} is deprecated", "{0.tag}");
2476  group: tr("deprecated tagging");
2477  fixRemove: "{0.key}";
2478}
2479area[parking:orientation][orientation]["parking:orientation"!=*orientation] {
2480  throwWarning: tr("{0} is deprecated", "{0.tag}");
2481  group: tr("deprecated tagging");
2482  suggestAlternative: "{1.key}={0.value}";
2483  suggestAlternative: "{1.key}={1.value}";
2484}
2485
2486/* When tags are deprecated they should be added to ignoretags.cfg too. */
Note: See TracBrowser for help on using the repository browser.