feat: H26 award recognises each canton by its main cities (regex per reference)

Operators rarely write the canton in their address/QTH but do write the city.
Add a per-reference city regex to every one of the 26 cantons (same mechanism as
WAPC): the description match now fires on the canton NAME or any of its main
cities (Genève→GE, Lausanne→VD, Zürich→ZH, Bellinzona→TI, …), with accented and
ASCII/localised spellings. Scoped to DXCC 287 so cross-border city-name clashes
can't misfire. Catalog version bumped 1→2 so the update reaches anyone already
running H26 v1 (unless they've edited it).
This commit is contained in:
2026-07-24 16:29:59 +02:00
parent 3ea7f44fd1
commit bf4fba484a
2 changed files with 30 additions and 4 deletions
+28 -2
View File
@@ -45,12 +45,13 @@
],
"total": 0,
"builtin": true,
"version": 1
"version": 2
},
"references": [
{
"code": "AG",
"name": "Aargau",
"pattern": "\\b(Aarau|Baden|Wettingen|Wohlen|Rheinfelden|Zofingen|Lenzburg|Brugg|Oftringen|Suhr|Spreitenbach)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -59,6 +60,7 @@
{
"code": "AI",
"name": "Appenzell Innerrhoden",
"pattern": "\\b(Appenzell|Oberegg)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -67,6 +69,7 @@
{
"code": "AR",
"name": "Appenzell Ausserrhoden",
"pattern": "\\b(Herisau|Teufen|Speicher|Heiden|Gais|Urnäsch|Waldstatt)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -75,6 +78,7 @@
{
"code": "BE",
"name": "Bern",
"pattern": "\\b(Bern|Berne|Thun|Biel|Bienne|Köniz|Burgdorf|Langenthal|Steffisburg|Münsingen|Spiez|Interlaken|Ostermundigen|Lyss|Zollikofen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -83,6 +87,7 @@
{
"code": "BL",
"name": "Basel-Landschaft",
"pattern": "\\b(Liestal|Allschwil|Reinach|Muttenz|Pratteln|Binningen|Münchenstein|Birsfelden|Aesch|Sissach|Oberwil)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -91,6 +96,7 @@
{
"code": "BS",
"name": "Basel-Stadt",
"pattern": "\\b(Basel|Bâle|Bale|Riehen|Bettingen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -99,6 +105,7 @@
{
"code": "FR",
"name": "Fribourg",
"pattern": "\\b(Fribourg|Freiburg|Bulle|Marly|Düdingen|Estavayer|Murten|Morat|Villars-sur-Glâne|Guin)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -107,6 +114,7 @@
{
"code": "GE",
"name": "Geneva",
"pattern": "\\b(Genève|Geneve|Geneva|Genf|Carouge|Vernier|Lancy|Meyrin|Onex|Thônex|Thonex|Versoix|Bernex|Plan-les-Ouates)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -115,6 +123,7 @@
{
"code": "GL",
"name": "Glarus",
"pattern": "\\b(Glarus|Glaris|Näfels|Netstal|Ennenda|Mollis)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -123,6 +132,7 @@
{
"code": "GR",
"name": "Graubünden (Grisons)",
"pattern": "\\b(Chur|Coire|Davos|Sankt Moritz|St\\.? Moritz|Landquart|Arosa|Klosters|Ilanz|Thusis|Poschiavo|Domat|Ems)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -131,6 +141,7 @@
{
"code": "JU",
"name": "Jura",
"pattern": "\\b(Delémont|Delemont|Porrentruy|Bassecourt|Courroux|Saignelégier|Alle)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -139,6 +150,7 @@
{
"code": "LU",
"name": "Lucerne",
"pattern": "\\b(Luzern|Lucerne|Emmen|Kriens|Horw|Ebikon|Sursee|Hochdorf|Willisau|Rothenburg)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -147,6 +159,7 @@
{
"code": "NE",
"name": "Neuchâtel",
"pattern": "\\b(Neuchâtel|Neuchatel|Neuenburg|La Chaux-de-Fonds|Chaux-de-Fonds|Le Locle|Peseux|Boudry|Colombier|Marin)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -155,6 +168,7 @@
{
"code": "NW",
"name": "Nidwalden",
"pattern": "\\b(Stans|Hergiswil|Buochs|Stansstad|Beckenried|Ennetbürgen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -163,6 +177,7 @@
{
"code": "OW",
"name": "Obwalden",
"pattern": "\\b(Sarnen|Kerns|Alpnach|Engelberg|Sachseln|Giswil)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -171,6 +186,7 @@
{
"code": "SG",
"name": "St. Gallen",
"pattern": "\\b(Sankt Gallen|Saint-Gall|Rapperswil|Wil|Gossau|Rorschach|Uzwil|Flawil|Altstätten|Jona)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -179,6 +195,7 @@
{
"code": "SH",
"name": "Schaffhausen",
"pattern": "\\b(Schaffhausen|Schaffhouse|Neuhausen|Stein am Rhein|Thayngen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -187,6 +204,7 @@
{
"code": "SO",
"name": "Solothurn",
"pattern": "\\b(Solothurn|Soleure|Olten|Grenchen|Zuchwil|Dornach|Oensingen|Balsthal|Biberist)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -195,6 +213,7 @@
{
"code": "SZ",
"name": "Schwyz",
"pattern": "\\b(Schwyz|Einsiedeln|Freienbach|Küssnacht|Arth|Lachen|Wollerau|Brunnen|Goldau)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -203,6 +222,7 @@
{
"code": "TG",
"name": "Thurgau",
"pattern": "\\b(Frauenfeld|Kreuzlingen|Arbon|Amriswil|Weinfelden|Romanshorn|Sirnach|Aadorf|Münchwilen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -211,6 +231,7 @@
{
"code": "TI",
"name": "Ticino",
"pattern": "\\b(Lugano|Bellinzona|Locarno|Mendrisio|Chiasso|Biasca|Ascona|Losone|Minusio|Giubiasco|Massagno)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -219,6 +240,7 @@
{
"code": "UR",
"name": "Uri",
"pattern": "\\b(Altdorf|Schattdorf|Erstfeld|Andermatt|Flüelen|Bürglen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -227,6 +249,7 @@
{
"code": "VD",
"name": "Vaud",
"pattern": "\\b(Lausanne|Yverdon|Montreux|Nyon|Vevey|Renens|Morges|Gland|Pully|Prilly|Ecublens|Aigle|Payerne|Rolle|Lutry|Bussigny)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -235,6 +258,7 @@
{
"code": "VS",
"name": "Valais",
"pattern": "\\b(Sion|Sitten|Martigny|Monthey|Sierre|Brig|Brigue|Naters|Visp|Viège|Conthey|Fully|Verbier|Zermatt|Crans-Montana|Saas-Fee|Savièse|Bagnes)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -243,6 +267,7 @@
{
"code": "ZG",
"name": "Zug",
"pattern": "\\b(Zug|Zoug|Baar|Cham|Steinhausen|Risch|Rotkreuz|Hünenberg|Unterägeri|Oberägeri)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
@@ -251,10 +276,11 @@
{
"code": "ZH",
"name": "Zurich",
"pattern": "\\b(Zürich|Zurich|Winterthur|Uster|Dübendorf|Dietikon|Wetzikon|Kloten|Wädenswil|Horgen|Thalwil|Opfikon|Küsnacht|Meilen|Bülach|Regensdorf|Schlieren|Adliswil|Volketswil)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
}
]
}
}