wiki:Help/Validator/MapCSSTagChecker

Version 9 (modified by Klumbumbus, 10 years ago) ( diff )

fix

Languages:

This tagchecker is considered to be the successor of the tagchecker.cfg and uses much of the MapCSS implementation for stylesheets. The official extension for files is *.validator.mapcss.

The main implementation ticket was #9414.

Syntax

selector {
   /* exactly one of */
   throwError: "message";
   throwWarning: "message";
   throwOther: "message";

   /* arbitrarily many of */
   fixAdd: "key=val";
   fixRemove: "key";
   fixChangeKey: "old=>new";
   suggestAlternative: "any text (e.g., alternative key)";

   /* assertions for unit tests */
   assertMatch: "node/way/relation key1=value1 keyN=valueN";
   assertNoMatch: "node/way/relation key1=value1 keyN=valueN";
}

Some more details:

  • The syntax of selectors is specified in #Selectors
  • Alternatively to strings on the right hand side of those expressions, expressions are evaluated (see list+syntax)
    • Most useful of all is tr() in order to have those strings translated (see below for an example; {0}, {1}, … are placeholders for additional arguments)
  • In addition, the placeholders {i.key}, {i.value}, {i.tag} are evaluated which refer to the corresponding i-th match condition
  • throwWarning: tr("{0}={1} is deprecated", "{0.key}", "{0.value}"); is the same like throwWarning: tr("{0} is deprecated", "{0.tag}");
  • If at least one fixAdd/fixRemove/fixChangeKey is specified, those changes are executed for objects matching this test when you press the fix button in the Validator Dialog.
  • If suggestAlternative is/are present, those alternatives are displayed together with the test message
  • assertMatch and assertNoMatch: You can give there examples, which should (assertMatch) or should not (assertNoMatch) match the used selector. So this is a test if the selector works correct for the given example. Normally this is only usefull for more complex selectors and less for simple key-value selectors. The tests are executed in the context of unit tests and on ​http://donvip.fr/jenkins/job/JOSM/. They are also executed for local validator files if the advanced option validator.check_assert_local_rules is set to "true" in the advanced preferences. If the test fails, you will get a message in the console output which can sound like: WARNUNG: Expecting test '...' to not match way ...

Examples

See *.mapcss files in source:trunk/data/validator/ for the checks included in JOSM's core.

*[barrier=wire_fence] {
  throwWarning: tr("{0} is deprecated", "{0.tag}"); /* "{0.tag}" evaluates to "barrier=wire_fence" */
  fixAdd: "barrier=fence";
  fixAdd: "fence_type=chain_link";
  assertMatch: "way barrier=wire_fence";
  assertNoMatch: "way barrier=fence";
}

See also

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.