Changes between Initial Version and Version 1 of Nb:Help/Validator/MapCSSTagChecker


Ignore:
Timestamp:
2025-03-08T21:22:16+01:00 (2 months ago)
Author:
paleid
Comment:

Nb added

Legend:

Unmodified
Added
Removed
Modified
  • Nb:Help/Validator/MapCSSTagChecker

    v1 v1  
     1[[TranslatedPages(revision=41)]]
     2Denne taggkontrollen anses som etterfølgeren til `tagchecker.cfg` og bruker mye av [wikitr:/Help/Styles/MapCSSImplementation MapCSS-implementeringen for stilark]. Den offisielle filendelsen er `*.validator.mapcss`.
     3
     4Vurder å installere [https://marketplace.visualstudio.com/items?itemName=whammo.mapcss-syntax MapCSS Syntax Highlighter] i VS Code for å legge til visuell fremheving for MapCSS-validatorsyntaks.
     5
     6Mer komplekse validatortester, som ikke kan gjøres med denne syntaksen, er implementert som [source:/trunk/src/org/openstreetmap/josm/data/validation/tests Java-tester].
     7
     8== Eksempler ==
     9Se `*.mapcss`-filer i source:/trunk/resources/data/validator/ for kontrollene inkludert i JOSMs kjerne eller [wikitr:/Rules eksterne validatorregler].
     10
     11{{{
     12#!mapcss
     13*[barrier=wire_fence] {
     14  throwWarning: tr("{0} er foreldet", "{0.tag}"); /* "{0.tag}" evalueres til "barrier=wire_fence" */
     15  fixAdd: "barrier=fence"; /* Du trenger ikke å fjerne barrier-nøkkelen først, den vil bare overskrive med den nye verdien */
     16  fixAdd: "fence_type=chain_link";
     17  assertMatch: "way barrier=wire_fence";
     18  assertNoMatch: "way barrier=fence";
     19}
     20}}}
     21
     22
     23bruk av klasser:
     24{{{
     25#!mapcss
     26way[highway=~/^(motorway|trunk|primary|secondary|tertiary)$/] {
     27  set major_road;
     28}
     29way.major_road[!ref] {
     30  throwOther: tr("highway uten {0}", "{1.key}"); /* klassen ".major:road" er den 0. selektoren og "!ref" er den 1. selektoren. Utdataene er: "highway uten ref" */
     31  assertMatch: "way highway=primary";
     32  assertNoMatch: "way highway=primary ref=123";
     33}
     34}}}
     35
     36== Noen flere detaljer ==
     37=== Syntaks ===
     38
     39{{{
     40#!mapcss
     41selector {
     42   /* nøyaktig en av */
     43   throwError: "melding";
     44   throwWarning: "melding";
     45   throwOther: "melding";
     46
     47   /* vilkårlig mange av */
     48   fixAdd: "key=val";
     49   fixRemove: "key";
     50   fixChangeKey: "old=>new";
     51   fixDeleteObject: this; /* sletter hele objektet! */
     52   suggestAlternative: "hvilken som helst tekst (f.eks., alternativ nøkkel)";
     53
     54   /* brukerdefinerte argumenter må prefikses med - */
     55   -osmoseItemClassLevel: "1210/1/1";
     56
     57   /* påstander for enhetstester */
     58   assertMatch: "node/way/relation key1=value1 keyN=valueN";
     59   assertNoMatch: "node/way/relation key1=value1 keyN=valueN";
     60
     61
     62   /* påstander med mellomrom, bruk \"...\" rundt verdien */
     63   assertNoMatch: "node amenity=recycling collection_times=\"Mo-Fr 15:00\"";
     64}
     65}}}
     66
     67* Syntaksen for selektorer er spesifisert i [wikitr:/Help/Styles/MapCSSImplementation#Selectors MapCSSImplementation#Selectors]
     68* Validatorregler kan begrenses til spesifikke land, se [wikitr:/Help/Styles/MapCSSImplementation#Territoryselector MapCSSImplementation#Territoryselector].
     69* Alternativt til strenger på høyre side av disse uttrykkene, evalueres uttrykk (se [wikitr:/Help/Styles/MapCSSImplementation#Evalexpressions liste+syntaks])
     70  * Mest nyttig av alle er [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#tr-org.openstreetmap.josm.gui.mappaint.Environment-java.lang.String...- tr()] for å få disse strengene oversatt (KLARIFISER: hvor oversettelser for ikke-kjernevalideringsregler bør opprettholdes?)
     71* Hvis minst én `fixAdd`/`fixRemove`/`fixChangeKey` er spesifisert, utføres disse endringene for objekter som samsvarer med denne testen når du trykker på reparasjonsknappen i [wikitr:/Help/Dialog/Validator Validator-panelet].
     72* Hvis `suggestAlternative` er/til stede, vises disse alternativene sammen med testmeldingen
     73* `assertMatch` og `assertNoMatch`: Du kan gi der eksempler som bør (assertMatch) eller ikke bør (assertNoMatch) samsvare med den brukte selektoren. Så dette er en test for å se om selektoren fungerer korrekt for det gitte eksempelet. Normalt er dette bare nyttig for mer komplekse selektorer og mindre for enkle nøkkelverdi-selektorer. Testene utføres i sammenheng med enhetstester og på ​[/jenkins/job/JOSM]. De utføres også for lokale validatordatafiler hvis den avanserte opsjonen `validator.check_assert_local_rules` er satt til "true" i [wikitr:/Help/Preferences/Advanced avanserte preferanser] (se #10206). Hvis du har aktivert denne opsjonen og testen mislykkes, vil du få en melding i konsollutdataene som kan se slik ut: `ADVARSEL: Forventer at testen '...' skal samsvare med way ...` eller `...ikke samsvare...`.
     74* Lokale validatorregler lastes automatisk på nytt hvis de endres og lagres av et eksternt program. (Automatisk pålasting kan stoppe hvis en syntaksfeil i validatordatafilen produserer et unntak i konsollen. Du må starte JOSM på nytt i dette tilfellet.)
     75
     76==== Plassholdere ====
     77* De brukes for å forenkle oversettelsen og gjøre den mindre feilutsatt.
     78* Plassholderne i advarselsmeldingen f.eks. `{3}` er skrevet med stigende tall, starter på 0. Så: 0 1 2 3 4... Dette er id-en til plassholderen.
     79* Etter advarselsmeldingen (atskilt med komma), må du definere innholdet i plassholderne.
     80* Først definerer du innholdet i den første plassholderen (den med id 0). Deretter definerer du innholdet i den andre plassholderen (den med id 1), og så videre.
     81* Du må spesifisere hvilken selektor du vil bruke i plassholderen og om du vil bruke nøkkelen (`{i.key}`), verdien (`{i.value}`) eller hele taggen (`{i.tag}`) til selektoren. Telling starter på 0. Så, `{4.value}` betyr verdien til den 5. selektoren.
     82* Klasser og pseudoklasser teller også.
     83* Du kan også bruke `{i.tag}` for nøkkelbare selektorer. Meldingen vil vise den faktiske verdien av nøkkelen (se #10859).
     84* Du kan bruke regulære uttrykk i selektoren og bruke dette i en plassholder. Meldingen vil ikke vise regexp-koden, men den faktiske nøkkelen/verdien/taggen (se #9782).
     85
     86
     87eksempler:
     88{{{
     89#!mapcss
     90*[a=b][c=d][e][f=g] {
     91  throwWarning: tr("{0} BLA {1} BLUB {2} BLIB {3}", "{1.tag}", "{0.key}", "{2.key}", "{3.value}");
     92}
     93}}}
     94
     95Dette vil evalueres til `c=d BLA a BLUB e BLIB g`
     96
     97{{{
     98#!mapcss
     99node:unconnected:in-downloaded-area[highway=turning_circle] {
     100  throwWarning: tr("{0} må være koblet til en vei", "{2.tag}");
     101}
     102}}}
     103
     104Dette vil evalueres til `highway=turning_circle må være koblet til en vei`. (`:unconnected` teller som 0. plassholder og `:in-downloaded-area` teller som 1. plassholder, derfor er `highway=turning_circle` den 2. plassholderen.)
     105
     106==== Gruppering ====
     107* Ulike tester kan grupperes i Validator-panelet. Eksempel:
     108
     109{{{
     110#!mapcss
     111node[oneway],
     112node[bridge],
     113node[sidewalk],
     114node[footway] {
     115  throwWarning: tr("{0}", "{0.tag}");
     116  group: tr("tag på en node som bør brukes på en vei");
     117}
     118}}}
     119
     120resulterer i:
     121
     122[[Image(Help/Validator/MapCSSTagChecker:testgroup.png,link=)]]
     123
     124Den samme grupperings teksten kan brukes på forskjellige regler, se f.eks. [source:/trunk/resources/data/validator/deprecated.mapcss deprecated.mapcss] eller til og med på forskjellige validatordatafiler.
     125
     126== Se også ==
     127* [wikitr:/Help/Dialog/Validator Validator-dialog]
     128* [wikitr:/Help/Preferences/Validator Validator-preferanser] og beskrivelse av validatortester
     129* Hovedimplementasjonsbiletten var #9414.
     130
     131----
     132Tilbake til [wikitr:/Help Hovedhjelp]