wiki:Fr:Help/Validator/MapCSSTagChecker

Autres langues:

Ce vérificateur d'attributs est considéré comme le successeur de tagchecker.cfg et utilise une grande partie de la Mise en œuvre de MapCSS pour les feuilles de style. L'extension officielle des fichiers est *.validator.mapcss.

Pensez à installer le ​MapCSS Syntax Highlighter (en) dans VS Code pour ajouter une mise en évidence visuelle de MapCSS paint et de la syntaxe du validateur.

Les tests de validation plus complexes, qui ne peuvent être réalisés avec cette syntaxe, sont réalisés en tant que tests Java (en).

Exemples

Voir les fichiers *.mapcss dans le validateur pour les contrôles inclus dans le noyau de JOSM ou les règles externes du validateur.

*[barrier=wire_fence] {
  throwWarning: tr("{0} is deprecated", "{0.tag}"); /* "{0.tag}" evaluates to "barrier=wire_fence" */
  fixAdd: "barrier=fence"; /* Vous n'avez pas besoin de supprimer préalablement la clé de barrière, elle sera simplement remplacée par la nouvelle valeur */
  fixAdd: "fence_type=chain_link";
  assertMatch: "way barrier=wire_fence";
  assertNoMatch: "way barrier=fence";
}

utilisation des classes :

way[highway=~/^(motorway|trunk|primary|secondary|tertiary)$/] {
  set major_road;
}
way.major_road[!ref] {
  throwOther: tr("highway without {0}", "{1.key}"); /* la classe ".major:road" est le 0ème sélecteur et "!ref" est le 1er sélecteur. La sortie est : "highway sans ref" */
  assertMatch: "way highway=primary";
  assertNoMatch: "way highway=primary ref=123";
}

Quelques précisions

Syntaxe

selector {
   /* exactement l'un des éléments suivants */
   throwError: "message";
   throwWarning: "message";
   throwOther: "message";

   /* arbitrairement beaucoup de */
   fixAdd: "key=val";
   fixRemove: "key";
   fixChangeKey: "old=>new";
   fixDeleteObject: this; /* supprime tout l'objet ! */
   suggestAlternative: "any text (e.g., alternative key)";

   /* les arguments définis par l'utilisateur doivent être préfixés par - */
   -osmoseItemClassLevel: "1210/1/1";

   /* assertions pour les tests unitaires */
   assertMatch: "node/way/relation key1=value1 keyN=valueN";
   assertNoMatch: "node/way/relation key1=value1 keyN=valueN";


   /* les assertions comportant des espaces, utilisez \"...\" autour de la valeur */
   assertNoMatch: "node amenity=recycling collection_times=\"Mo-Fr 15:00\"";
}
  • La syntaxe des sélecteurs est spécifiée dans Mise en œuvre de MapCSS : Sélecteurs
  • Les règles du validateur peuvent être limitées à des pays spécifiques, voir Mise en œuvre de MapCSS : Sélecteur de territoire.
  • Contrairement aux chaînes de caractères du côté droit de ces expressions, les expressions sont évaluées (voir liste+syntaxe)
    • Le plus utile de tous est tr() afin de faire traduire ces chaînes (CLARIFIER : où les traductions pour les règles de validation non essentielles doivent être maintenues ?)
  • Si au moins un parmi fixAdd/fixRemove ou fixChangeKey est spécifié, ces changements sont exécutés pour les objets correspondant à ce test lorsque vous appuyez sur le bouton Réparer du panneau du validateur.
  • Si suggestAlternative est/sont présent/s, ces alternatives sont affichées avec le message du test.
  • assertMatch et assertNoMatch: Vous pouvez y donner des exemples qui devraient (assertMatch) ou ne devraient pas (assertNoMatch) correspondre au sélecteur utilisé. C'est donc un test pour savoir si le sélecteur fonctionne correctement pour l'exemple donné. Normalement, cela n'est utile que pour les sélecteurs plus complexes et moins pour les sélecteurs simples de type clé-valeur. Les tests sont exécutés dans le contexte des tests unitaires et sur ​jenkins/job/JOSM. Ils sont également exécutés pour les fichiers locaux du validateur si l'option avancée validator.check_assert_local_rules est définie à "true" dans les Paramètres avancés (voir #10206). Si vous avez activé cette option et que le test échoue, vous obtiendrez un message dans la sortie console qui peut ressembler à ceci : WARNING: Expecting test '...' to match way ... ou ...to not match....
  • Les règles du validateur local se rechargent automatiquement, si elles sont modifiées et sauvegardées par une application externe. (Le rechargement automatique peut s'arrêter, si une erreur de syntaxe dans votre fichier de validateur produit une exception dans la console. Dans ce cas, vous devez redémarrer JOSM).)

Placeholders (texte de substitution)

  • Ils sont utilisés pour simplifier la traduction et la rendre moins sujette aux erreurs.
  • Les placeholders dans le message d'avertissement, par exemple {3} sont écrits avec des nombres croissants, en commençant par 0. Donc : 0 1 2 3 4... C'est l'id du placeholders.
  • Après le message d'avertissement (séparé par une virgule), vous devez définir le contenu des placeholders.
  • Vous définissez d'abord le contenu du premier placeholders (celui qui a l'id 0). Ensuite, vous définissez le contenu du deuxième placeholders (celui qui a l'id 1), et ainsi de suite.
  • Vous devez préciser quel sélecteur vous voulez utiliser dans le placeholders et si vous voulez utiliser la clé ({i.key}), la valeur ({i.value}) ou l'attribut entier ({i.tag}) du sélecteur. Le comptage commence à 0. Ainsi, {4.value} signifie la valeur du 5ème sélecteur.
  • Les classes et pseudoclasses comptent également.
  • Vous pouvez également utiliser {i.tag} pour les sélecteurs à clé uniquement. Le message affichera la valeur réelle de la clé (voir #10859).
  • Vous pouvez utiliser des expressions régulières dans le sélecteur et utiliser ceci dans un placeholders. Le message ne montrera pas le code de l'expression régulière mais la clé/valeur/attribut réel (voir #9782).

exemples :

*[a=b][c=d][e][f=g] {
  throwWarning: tr("{0} BLA {1} BLUB {2} BLIB {3}", "{1.tag}", "{0.key}", "{2.key}", "{3.value}");
}

Cela donnera c=d BLA a BLUB e BLIB g

node:unconnected:in-downloaded-area[highway=turning_circle] {
  throwWarning: tr("{0} doit être relié à un chemin", "{2.tag}");
}

Cela donnera highway=turning_circle doit être relié à un chemin. (:unconnected compte comme zéro placeholders et :in-downloaded-area compte comme premier placeholders, donc highway=turning_circle est le deuxième placeholders.)

Regroupement

  • Les différents tests peuvent être regroupés dans le panneau du validateur. Exemple :
node[oneway],
node[bridge],
node[sidewalk],
node[footway] {
  throwWarning: tr("{0}", "{0.tag}");
  group: tr("attribut sur un nœud qui devrait être utilisé sur un chemin.");
}

aboutit à :

Le même texte de regroupement peut être utilisé sur différentes règles, voir par exemple les mapcss dépréciés ou même sur différents fichiers de validateur.

Voir également


Retour à l'Aide Principale

Last modified 8 months ago Last modified on 2023-10-02T17:56:32+02:00
Note: See TracWiki for help on using the wiki.