Scripts/WME Validator/Custom Checks: Difference between revisions View history

m (→‎Advanced Examples: fixed link)
m (Fixed code tags at beginning)
Line 16: Line 16:
Road type: variable ${typeRank} expands to: [updated to BE/NL version 1.1.19]
Road type: variable ${typeRank} expands to: [updated to BE/NL version 1.1.19]


<code>
<code>1 street</code><br />
* 1 street
<code>2 primary street</code><br />
* 2 primary street
<code>3 highway</code><br />
* 3 highway
<code>4 ramp</code><br />
* 4 ramp
<code>5 walking trail</code><br />
* 5 walking trail
<code>6 major highway</code><br />
* 6 major highway
<code>7 minor highway</code><br />
* 7 minor highway
<code>8 dirt road</code><br />
* 8 dirt road
<code>10 pedestrian boardwalk</code><br />
* 10 pedestrian boardwalk
<code>14 for Major Highways</code><br />
* 14 for Major Highways
<code>15 ferry</code><br />
* 15 ferry
<code>16 stairway</code><br />
* 16 stairway
<code>17 private road</code><br />
* 17 private road
<code>18 railroad</code><br />
* 18 railroad
<code>19 runway / taxiway</code><br />
* 19 runway / taxiway
<code>20 parking lot</code><br />
* 20 parking lot
</code>


Road direction: variable ${direction} expands to:
Road direction: variable ${direction} expands to:


<code>
<code>0 for Unknown direction</code><br />
* 0 for Unknown direction
<code>1 for A->B</code><br />
* 1 for A->B
<code>2 for B->A</code><br />
* 2 for B->A
<code>3 for Two-way segments</code><br />
* 3 for Two-way segments
</code>


== Regular Expressions (RegExp) ==
== Regular Expressions (RegExp) ==

Revision as of 21:22, 3 May 2017

WME Validator is a powerful script that helps editors find and fix issues on the Waze map.

Custom Checks Examples

Custom check is a powerful tool of WME Validator to highlight very specific map issues, not covered with built-in validations.

To set up a custom check in Validator click Settings->custom. There are two checks: green and blue. Each check has two fields: template and regular expression (RegExp).

Hover your mouse over the template field to get a tooltip with available variables. Validator substitutes those variables with segment's data and then tries to match that string over the RegExp. If the expanded template string matches the RegExp - Validator highlights the segment.

Template Variables

Most of the variables are self-explanatory. Note: empty address fields expand to empty streets, i.e. if you set "None" next to city name, then template "#${city}#" for this segment will be expanded to "##"

Road type: variable ${typeRank} expands to: [updated to BE/NL version 1.1.19]

1 street
2 primary street
3 highway
4 ramp
5 walking trail
6 major highway
7 minor highway
8 dirt road
10 pedestrian boardwalk
14 for Major Highways
15 ferry
16 stairway
17 private road
18 railroad
19 runway / taxiway
20 parking lot

Road direction: variable ${direction} expands to:

0 for Unknown direction
1 for A->B
2 for B->A
3 for Two-way segments

Regular Expressions (RegExp)

Regular expressions are patterns used to match character combinations in your expanded template. See the detailed description of regular expressions on MDN: link

Validator provides the following two extensions for regular expressions: Debug RegExp. To debug your RegExp add letter D at the very beginning: D/^[a-z]/ Validator will print debug information to the JavaScript console (Ctrl+Shift+J), so you can see how template variables expand for the segments on the map.

Negate RegExp. Sometimes it's much easier to create a RegExp for a normal condition and then just negate the result. To do so, add an exclamation mark at the very beginning: !/ (St|Ave)$/

Easy Examples

To highlight streets with word North

Template: ${street}

RegExp: /North/

To highlight invalid (null) elevations

Template: ${elevation}

RegExp: /null/

To highlight segments with no state assigned

Template: ${state}

RexExp: /^$/

To highlight segments with a U-turn

Template: ${Uturn}

RexExp: /1/

Medium Examples

To highlight Ramps with non-ground elevation:

Template: ${typeRank}:${elevation}

RegExp: /12:[^0]/

To highlight Freeways which do not start with letter A

Template: ${typeRank}:${street}

RegExp: /15:[^A]/

To highlight streets named "U-Turn" in LA

Template: ${state}:${street}

RegExp: /Louisiana:U-Turn/

To highlight dead-end U-turns

Template: ${deadEnd}:${Uturn}

RegExp: /1:1/

To highlight the opposite: missing dead-end U-turns

Template: ${deadEnd}:${Uturn}

RegExp: /1:0/

New! To highlight Freeways or Major Highways in format 'Axx', 'Ixx' etc

Template: ${typeRank}:${street}

RegExp: /^(15|14):[a-z][0-9]/i

New! To search for segments shorter than 17m:

Template: ${length}

RegExp: /^([0-9]|1[0-6])$/

New! To mark dead-ends without U-turn:

Template: A${deadEndA}:${UturnA}:B${deadEndB}:${UturnB}

RegExp: /A1:0|B1:0/


New! To highlight more than 100m long unnamed drivable streets:

Template: ${drivable}:${street}:${length}

RegExp: /1::...+/

Advanced Examples

To highlight street name which ends in Cntr, or Exd etc (any case variant)

Template: ${street}

RegExp: / (Cntr|Exd|La|Plc|Rvr|Tnpk|Wy)$/i

To highlight segments that have an alt street specified but no city

Template: @@${altCity[0]}##${altStreet[0]}@@${altCity[1]}##${altStreet[1]}

RegExp: /@@##[^@]/

To highlight invalid abbreviations for Australian roads

Template: ${street}

RegExp: !/ (Ave|Blvd|Cl|Cres|Cct|Ct|Dr|Way|Line|Ln|Mtwy|Pde|Pl|Rd|St)$|^$/

To highlight lowercase street names for US (except S, N, W, E and to)

Template: ${street}

RegExp: /^(?!(to) [^a-z])((S|N|W|E) )?[a-z]/

New! To highlight Freeways with no cardinal direction (NSEW)

Template: ${type}:${street}

RegExp: !/^[^3]| [NSEW]$/

New! City name abbreviation 'snt' should be lowercase and at the very beginning

Template: ${city}

RegExp: /(^|[ (])(?!^snt )[Ss][Nn][Tt]([ )]|$)/

New! To highlight segments if primary street name and one of the alt. names are the same

Template: #${street}#${altStreet[#]}#

RegExp: /(#.+)(?=#).*\1#/