Ticket #22427: validate_level_ranges.patch

File validate_level_ranges.patch, 2.5 KB (added by tordanik, 8 days ago)
  • resources/data/validator/numeric.mapcss

    diff --git a/resources/data/validator/numeric.mapcss b/resources/data/validator/numeric.mapcss
    index ff190dd326..04052d55ec 100644
    a b  
    3939  assertMatch: "node building:levels=-foo";
    4040  assertNoMatch: "node level=-1";
    4141}
     42*[building:levels][building:levels !~ /^(([0-9]|[1-9][0-9]*)(\.5)?)$/]!.negative_value {
     43  throwWarning: tr("{0} should have numbers only with optional .5 increments", "{0.key}");
     44  assertNoMatch: "node building:levels=1.5";
     45  assertNoMatch: "node building:levels=-1"; /* excluded here via !.negative_value in selector */
     46  assertMatch: "node building:levels=1A";
     47  assertNoMatch: "node building:levels=0"; /* valid because there can be building:levels:underground > 0 or roof:levels > 0 */
     48}
    4249
    43 *[building:levels][building:levels !~ /^(([0-9]|[1-9][0-9]*)(\.5)?)$/]!.negative_value,
    44 *[level][level !~ /^((((-*[1-9]|[0-9])|-*[1-9][0-9]*)(\.5)?)|-0\.5)(;((((-*[1-9]|[0-9])|-*[1-9][0-9]*)(\.5)?)|-0\.5))*$/] { /* all numbers from -∞ to ∞ in 0.5 steps, optional multiple values separated by a ; */
     50/* level values: all numbers from -∞ to ∞ in 0.5 steps, optional multiple values separated by a ;, optional second value separated by a - */
     51*[level][level !~ /^((((-*[1-9]|[0-9])|-*[1-9][0-9]*)(\.5)?)|-0\.5)(?:(;((((-*[1-9]|[0-9])|-*[1-9][0-9]*)(\.5)?)|-0\.5))*|(-((((-*[1-9]|[0-9])|-*[1-9][0-9]*)(\.5)?)|-0\.5)))$/] {
    4552  throwWarning: tr("{0} should have numbers only with optional .5 increments", "{0.key}");
    4653  assertMatch: "node level=one";
    4754  assertMatch: "node level=01";
     
    4956  assertMatch: "node level=-01.5";
    5057  assertMatch: "node level=2.3";
    5158  assertMatch: "node level=-0";
     59  assertMatch: "node level=1-2-3";
    5260  assertNoMatch: "node level=0";
    5361  assertNoMatch: "node level=1";
    5462  assertNoMatch: "node level=-1";
     
    6169  assertNoMatch: "node level=0;-0.5";
    6270  assertNoMatch: "node level=-0.5;0";
    6371  assertNoMatch: "node level=-1;-0.5";
    64   assertNoMatch: "node building:levels=1.5";
    65   assertNoMatch: "node building:levels=-1"; /* tested already by rule above "negative values" and excluded here via !.negative_value in selector */
    66   assertMatch: "node building:levels=1A";
    67   assertNoMatch: "node building:levels=0"; /* valid because there can be building:levels:underground > 0 or roof:levels > 0 */
     72  assertNoMatch: "node level=0-3";
     73  assertNoMatch: "node level=-1-100";
    6874}
    6975
    7076*[roof:height][siunit_length(tag("roof:height")) == 0][roof:shape=flat] {