Ticket #21866: josm_21866_numeric.patch

File josm_21866_numeric.patch, 2.6 KB (added by skyper, 3 years ago)

validator rules using local classes

  • resources/data/validator/numeric.mapcss

     
    390390  assertNoMatch: "way frequency=123.5 MHz";
    391391}
    392392
    393 way[gauge][gauge !~ /^([1-9][0-9]{1,3}(;[1-9][0-9]{1,3})*|broad|standard|narrow)$/] {
     393
     394relation[gauge][gauge =~ /^(broad|standard|narrow)$/],
     395way[gauge][gauge      =~ /^(broad|standard|narrow)$/] {
     396  throwWarning: tr("imprecise value of {0}", "{0.tag}");
     397  suggestAlternative: tr("a integer value in millimeter");
     398  set imprecise_gauge;
     399  assertNoMatch: "way gauge=something";
     400  assertNoMatch: "way gauge=1435";
     401  assertNoMatch: "way gauge=1000;1435";
     402  assertNoMatch: "way gauge=2''10'";
     403  assertMatch:   "way gauge=standard";
     404  assertMatch:   "way gauge=narrow";
     405}
     406relation[gauge][gauge !~ /^([1-9][0-9]{1,3}(;[1-9][0-9]{1,3})*)$/]!.imprecise_gauge,
     407way[gauge][gauge      !~ /^([1-9][0-9]{1,3}(;[1-9][0-9]{1,3})*)$/]!.imprecise_gauge {
    394408  throwWarning: tr("unusual value of {0}", "{0.key}");
    395   assertMatch: "way gauge=something";
     409  set unusual_gauge;
     410  assertMatch:   "way gauge=something";
     411  assertMatch:   "way gauge=2''10'";
    396412  assertNoMatch: "way gauge=1435";
    397413  assertNoMatch: "way gauge=1000;1435";
    398414  assertNoMatch: "way gauge=standard";
    399415  assertNoMatch: "way gauge=narrow";
    400416}
     417/* #21866  */
     418relation[/railway$/ =~ /^narrow_gauge$/][gauge][gauge !~ /^((14(?:3[0-4]|[4-9])|(?:14[0-2]|(?:1[0-3]|9)[0-9])[0-9]?|143|(?:[2-7][0-9]|1[5-9])[0-9]|8(?:[0-8][0-9]|9[0-9]?));?)+$/]!.imprecise_gauge!.unusual_gauge,
     419way[/railway$/      =~ /^narrow_gauge$/][gauge][gauge !~ /^((14(?:3[0-4]|[4-9])|(?:14[0-2]|(?:1[0-3]|9)[0-9])[0-9]?|143|(?:[2-7][0-9]|1[5-9])[0-9]|8(?:[0-8][0-9]|9[0-9]?));?)+$/]!.imprecise_gauge!.unusual_gauge {
     420  group: tr("suspicious tag combination");
     421  throwWarning:  tr("unusual {0} value on narrow {0} railway", "{1.key}");
     422  assertMatch:   "way railway=narrow_gauge gauge=88";
     423  assertNoMatch: "way railway=narrow_gauge gauge=89";
     424  assertNoMatch: "way railway=narrow_gauge gauge=1434";
     425  assertMatch:   "way railway=narrow_gauge gauge=1435";
     426  assertMatch:   "way railway=narrow_gauge gauge=1435;1500";
     427  assertMatch:   "way railway=narrow_gauge gauge=60;600";
     428  assertNoMatch: "way railway=narrow_gauge gauge=2''10'";
     429  assertNoMatch: "way railway=narrow_gauge gauge=something";
     430  assertNoMatch: "way railway=narrow_gauge gauge=narrow";
     431}
    401432
    402433/* the numbers for percentage and degrees include could probably be bracketed a bit more precisely */
    403434way[incline][incline !~ /^(up|down|-?([0-9]+?(\.[1-9]%)?|100)[%°]?)$/] {