vehicles 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +57 -7
- data/README.md +353 -69
- data/data/PROVENANCE-vehicles.md +2 -2
- data/data/plates/PROVENANCE.md +2 -2
- data/data/plates/_decode/at-districts.yml +2 -2
- data/data/plates/_decode/cn-issuing-offices.yml +2 -2
- data/data/plates/_decode/cn-provinces.yml +2 -2
- data/data/plates/_decode/cz-kraj.yml +1 -1
- data/data/plates/_decode/dk-serial-blocks.yml +1 -1
- data/data/plates/_decode/es-provinces.yml +1 -1
- data/data/plates/_decode/fr-departements.yml +2 -2
- data/data/plates/_decode/gb-age-identifiers.yml +1 -1
- data/data/plates/_decode/gb-memory-tags.yml +1 -1
- data/data/plates/_decode/gr-prefectures.yml +1 -1
- data/data/plates/_decode/hr-cities.yml +3 -3
- data/data/plates/_decode/ie-counties.yml +3 -3
- data/data/plates/_decode/in-state-codes.yml +2 -2
- data/data/plates/_decode/it-provinces.yml +3 -3
- data/data/plates/_decode/jp-office-marks.yml +2 -2
- data/data/plates/_decode/jp-use-marks.yml +2 -2
- data/data/plates/_decode/kr-authority-marks.yml +1 -1
- data/data/plates/_decode/mx-entity-series.yml +1 -1
- data/data/plates/_decode/my-index-marks.yml +4 -4
- data/data/plates/_decode/pt-trailer-services.yml +1 -1
- data/data/plates/_decode/ro-counties.yml +1 -1
- data/data/plates/_decode/se-diplomatic.yml +1 -1
- data/data/plates/_decode/si-regions.yml +1 -1
- data/data/plates/_decode/ua-regions.yml +1 -1
- data/data/plates/_meta/classes.yml +1 -1
- data/data/plates/_meta/separators.yml +1 -1
- data/data/plates/ad.yml +555 -52
- data/data/plates/ar.yml +8 -8
- data/data/plates/at.yml +91 -10
- data/data/plates/au-act.yml +13 -13
- data/data/plates/au-nsw.yml +9 -9
- data/data/plates/au-nt.yml +13 -14
- data/data/plates/au-qld.yml +7 -7
- data/data/plates/au-sa.yml +7 -7
- data/data/plates/au-tas.yml +10 -10
- data/data/plates/au-vic.yml +6 -6
- data/data/plates/au-wa.yml +8 -8
- data/data/plates/be.yml +11 -11
- data/data/plates/br.yml +14 -14
- data/data/plates/ca-ab.yml +10 -10
- data/data/plates/ca-bc.yml +6 -6
- data/data/plates/ca-mb.yml +4 -4
- data/data/plates/ca-nb.yml +9 -9
- data/data/plates/ca-nl.yml +11 -11
- data/data/plates/ca-ns.yml +12 -12
- data/data/plates/ca-nt.yml +7 -7
- data/data/plates/ca-nu.yml +7 -7
- data/data/plates/ca-on.yml +21 -21
- data/data/plates/ca-pe.yml +13 -13
- data/data/plates/ca-qc.yml +11 -11
- data/data/plates/ca-sk.yml +6 -6
- data/data/plates/ca-yt.yml +6 -6
- data/data/plates/ch.yml +14 -14
- data/data/plates/cn.yml +9 -9
- data/data/plates/cy.yml +6 -6
- data/data/plates/cz.yml +9 -9
- data/data/plates/de.yml +8 -8
- data/data/plates/dk.yml +12 -12
- data/data/plates/ee.yml +13 -13
- data/data/plates/eg.yml +708 -0
- data/data/plates/es.yml +8 -8
- data/data/plates/fi.yml +14 -14
- data/data/plates/fr.yml +12 -12
- data/data/plates/gb.yml +16 -16
- data/data/plates/gr.yml +14 -14
- data/data/plates/hr.yml +15 -15
- data/data/plates/hu.yml +16 -16
- data/data/plates/ie.yml +7 -7
- data/data/plates/in.yml +7 -7
- data/data/plates/is.yml +3 -3
- data/data/plates/it.yml +21 -21
- data/data/plates/jp.yml +121 -121
- data/data/plates/kr.yml +6 -6
- data/data/plates/li.yml +6 -6
- data/data/plates/lt.yml +10 -10
- data/data/plates/lu.yml +4 -4
- data/data/plates/lv.yml +9 -9
- data/data/plates/mc.yml +4 -4
- data/data/plates/mt.yml +5 -5
- data/data/plates/mx.yml +7 -7
- data/data/plates/my.yml +18 -18
- data/data/plates/ng.yml +346 -0
- data/data/plates/nl.yml +5 -5
- data/data/plates/no.yml +7 -7
- data/data/plates/nz.yml +18 -18
- data/data/plates/pl.yml +4 -4
- data/data/plates/pt.yml +13 -5
- data/data/plates/ro.yml +14 -14
- data/data/plates/se.yml +13 -13
- data/data/plates/si.yml +8 -8
- data/data/plates/sk.yml +15 -15
- data/data/plates/sm.yml +7 -7
- data/data/plates/th.yml +10 -10
- data/data/plates/tr.yml +432 -0
- data/data/plates/ua.yml +9 -9
- data/data/plates/us-ak.yml +11 -11
- data/data/plates/us-al.yml +12 -12
- data/data/plates/us-ar.yml +15 -15
- data/data/plates/us-as.yml +10 -10
- data/data/plates/us-az.yml +10 -10
- data/data/plates/us-ca.yml +13 -13
- data/data/plates/us-co.yml +14 -14
- data/data/plates/us-ct.yml +24 -24
- data/data/plates/us-dc.yml +7 -7
- data/data/plates/us-de.yml +10 -10
- data/data/plates/us-fl.yml +17 -17
- data/data/plates/us-ga.yml +10 -10
- data/data/plates/us-gu.yml +11 -11
- data/data/plates/us-hi.yml +11 -11
- data/data/plates/us-ia.yml +9 -9
- data/data/plates/us-id.yml +13 -13
- data/data/plates/us-il.yml +11 -11
- data/data/plates/us-in.yml +9 -9
- data/data/plates/us-ks.yml +8 -8
- data/data/plates/us-ky.yml +11 -11
- data/data/plates/us-la.yml +11 -11
- data/data/plates/us-ma.yml +10 -10
- data/data/plates/us-md.yml +7 -7
- data/data/plates/us-me.yml +16 -16
- data/data/plates/us-mi.yml +8 -8
- data/data/plates/us-mn.yml +13 -13
- data/data/plates/us-mo.yml +13 -13
- data/data/plates/us-mp.yml +12 -12
- data/data/plates/us-ms.yml +8 -8
- data/data/plates/us-mt.yml +12 -12
- data/data/plates/us-nc.yml +12 -12
- data/data/plates/us-nd.yml +10 -10
- data/data/plates/us-ne.yml +10 -10
- data/data/plates/us-nh.yml +8 -8
- data/data/plates/us-nj.yml +8 -8
- data/data/plates/us-nm.yml +14 -14
- data/data/plates/us-nv.yml +18 -18
- data/data/plates/us-ny.yml +17 -17
- data/data/plates/us-oh.yml +13 -13
- data/data/plates/us-ok.yml +12 -12
- data/data/plates/us-or.yml +15 -15
- data/data/plates/us-pa.yml +14 -14
- data/data/plates/us-pr.yml +15 -15
- data/data/plates/us-ri.yml +10 -10
- data/data/plates/us-sc.yml +7 -7
- data/data/plates/us-sd.yml +12 -12
- data/data/plates/us-tn.yml +8 -8
- data/data/plates/us-tx.yml +17 -17
- data/data/plates/us-ut.yml +12 -12
- data/data/plates/us-va.yml +14 -14
- data/data/plates/us-vi.yml +16 -16
- data/data/plates/us-vt.yml +9 -9
- data/data/plates/us-wa.yml +18 -18
- data/data/plates/us-wi.yml +8 -8
- data/data/plates/us-wv.yml +9 -9
- data/data/plates/us-wy.yml +10 -10
- data/data/plates/va.yml +7 -7
- data/data/plates/za.yml +11 -11
- data/data/vehicles.json +121081 -62015
- data/lib/generators/vehicles/templates/initializer.rb +21 -12
- data/lib/generators/vehicles/templates/vehicles_refresh_job.rb +8 -4
- data/lib/vehicles/color.rb +8 -1
- data/lib/vehicles/colors.rb +14 -10
- data/lib/vehicles/configuration.rb +82 -3
- data/lib/vehicles/data_source.rb +220 -0
- data/lib/vehicles/dataset.rb +38 -6
- data/lib/vehicles/dataset_resolution.rb +39 -3
- data/lib/vehicles/dataset_slice.rb +90 -0
- data/lib/vehicles/hosted_result.rb +94 -0
- data/lib/vehicles/http.rb +75 -7
- data/lib/vehicles/id_lookup.rb +37 -0
- data/lib/vehicles/kind_rule.rb +63 -0
- data/lib/vehicles/labels.rb +131 -0
- data/lib/vehicles/make.rb +45 -19
- data/lib/vehicles/model.rb +66 -19
- data/lib/vehicles/model_match.rb +16 -2
- data/lib/vehicles/model_matcher.rb +6 -7
- data/lib/vehicles/plates/series.rb +87 -8
- data/lib/vehicles/plates/template_fill.rb +2 -2
- data/lib/vehicles/plates/templates.rb +9 -5
- data/lib/vehicles/plates.rb +54 -8
- data/lib/vehicles/providers/hosted_provider.rb +145 -32
- data/lib/vehicles/providers/local_provider.rb +2 -2
- data/lib/vehicles/refresh_result.rb +74 -0
- data/lib/vehicles/refresher.rb +190 -54
- data/lib/vehicles/release_checks.rb +72 -0
- data/lib/vehicles/text_matcher.rb +19 -10
- data/lib/vehicles/validators/vehicle_make_validator.rb +18 -1
- data/lib/vehicles/validators/vehicle_model_validator.rb +17 -1
- data/lib/vehicles/version.rb +1 -1
- data/lib/vehicles.rb +119 -67
- data/rakelib/data_refresh.rake +1 -1
- data/rakelib/plates_refresh.rake +1 -1
- data/sig/vehicles.rbs +67 -13
- metadata +13 -2
data/data/plates/pt.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/pt.yml — Portugal (
|
|
1
|
+
# plates/pt.yml — Portugal (the plates spec gate L1, EU/EEA wave 2).
|
|
2
2
|
#
|
|
3
3
|
# ONE INSTRUMENT CARRIES ALMOST THIS WHOLE FILE, and it is not the one the
|
|
4
4
|
# secondary web cites. The Portuguese plate is governed by the REGULAMENTO DO
|
|
@@ -173,12 +173,20 @@ series:
|
|
|
173
173
|
where the Anexo IV Modelo I drawing it replaces plainly draws one. The
|
|
174
174
|
canonical printed form in `pattern` is therefore the GAP. `regex` still
|
|
175
175
|
spells the position as the sanctioned separator-only class `[- ]`
|
|
176
|
-
(
|
|
176
|
+
(the plates spec §2.8) because the instrument now prescribes millimetres and
|
|
177
177
|
no glyph, which is precisely the es-consular-cc-1999 situation: with no
|
|
178
178
|
glyph mandated, both members of the emitted set are inside the grammar,
|
|
179
179
|
so the class is `strict` rather than a widening. FLAGGED FOR THE
|
|
180
180
|
VERIFIER: this reading rests on the statutory drawing plus a deletion,
|
|
181
181
|
and a photograph of an issued plate would settle it in one look.
|
|
182
|
+
SETTLED 2026-08-03: it did. Commons "2020 Portugal license plate
|
|
183
|
+
example.jpg" (CC BY-SA 4.0) photographs issued AE 36 EM — no
|
|
184
|
+
separator glyph anywhere, tight intra-group spacing, a small clear
|
|
185
|
+
gap between the pairs whose measured proportion (~0.19 of the
|
|
186
|
+
character em) matches the Anexo V 20 mm chain. Independently
|
|
187
|
+
reported by the project owner from plates in the wild the same day.
|
|
188
|
+
The statutory reading holds; the printed form is the GAP, full stop.
|
|
189
|
+
Evidence: statutory + photographic-observed.
|
|
182
190
|
progression: >-
|
|
183
191
|
Nationally sequential and non-geographic, like every Portuguese series
|
|
184
192
|
since 1937. The known anchor is the first number, AA-01-AA, so the two
|
|
@@ -576,7 +584,7 @@ series:
|
|
|
576
584
|
body that assigns the CD/CC/FM prefixes and their per-mission numbering is
|
|
577
585
|
the Ministério dos Negócios Estrangeiros, not the IMT, and no MNE
|
|
578
586
|
instrument was reached — so no mission decode table exists here and none
|
|
579
|
-
was invented.
|
|
587
|
+
was invented. The plates spec puts diplomatic decode tables at gate L4.
|
|
580
588
|
|
|
581
589
|
# =========================================================================
|
|
582
590
|
# TEMPORARY IMPORT — the blue-character plate.
|
|
@@ -704,7 +712,7 @@ series:
|
|
|
704
712
|
one, with black letters, digits, dashes and border on both. The yellow
|
|
705
713
|
is recorded as the entry's background because ciclomotores are the
|
|
706
714
|
dominant population; the white variant is a colour-only difference on
|
|
707
|
-
the same format and period, hence a note per
|
|
715
|
+
the same format and period, hence a note per the plates spec §2.3 rather than
|
|
708
716
|
a second series.
|
|
709
717
|
region_encoding: "câmara municipal — three-letter codes not enumerated by the instrument; no decode table authored"
|
|
710
718
|
sources:
|
|
@@ -764,7 +772,7 @@ series:
|
|
|
764
772
|
what the drawing — the thing a manufacturer builds from — labels, with
|
|
765
773
|
the red confined to the class-letter field; the enacting sentence is
|
|
766
774
|
preserved verbatim here so a verifier can overturn that choice with one
|
|
767
|
-
look at a photograph.
|
|
775
|
+
look at a photograph. The plates spec §5.3: record disagreements, never
|
|
768
776
|
average them.
|
|
769
777
|
region_encoding: none
|
|
770
778
|
sources:
|
data/data/plates/ro.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/ro.yml — Romania (
|
|
1
|
+
# plates/ro.yml — Romania (the plates spec gate L1, wave 2).
|
|
2
2
|
#
|
|
3
3
|
# WHAT IS PRIMARY HERE AND WHAT IS NOT.
|
|
4
4
|
#
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
# 23 of the Regulament prescribes "numărul de ordine, format din cifre arabe"
|
|
34
34
|
# and fixes NO NUMBER OF DIGITS. That is why Bucharest could lengthen its
|
|
35
35
|
# order number from two digits to three without any amendment, and it is why
|
|
36
|
-
# every standard series here carries a `regex_statutory` (
|
|
36
|
+
# every standard series here carries a `regex_statutory` (the plates spec §2.7)
|
|
37
37
|
# that is genuinely wider than its `regex`: the issued grammar is two digits
|
|
38
38
|
# for counties and three for the capital, but the LEGAL bound is any number of
|
|
39
39
|
# Arabic numerals. Romania is the cleanest example of that tier in the dataset
|
|
@@ -56,14 +56,14 @@
|
|
|
56
56
|
# 145e and DIN 74069 — building to them is fine, their text is not
|
|
57
57
|
# redistributable, and in this pass neither was purchased or read. They are
|
|
58
58
|
# the reason every colour and every millimetre below is `secondary-wikipedia`
|
|
59
|
-
# with `hex_basis: observed`. This is the same posture
|
|
59
|
+
# with `hex_basis: observed`. This is the same posture the plates spec §4 records
|
|
60
60
|
# for SAE J686: NAMED, UNPINNED, never quoted.
|
|
61
61
|
#
|
|
62
62
|
# 5. ROMANIA'S EU BAND HAS A HARD DATE AND A SOFT ONE. Accession was 1 January
|
|
63
63
|
# 2007, which is a treaty date and not in doubt. That the twelve-star band
|
|
64
64
|
# REPLACED the Romanian tricolour band on plates on or about that date is
|
|
65
65
|
# reported by a secondary and is tagged as such. The design change is modelled
|
|
66
|
-
# as a series boundary (
|
|
66
|
+
# as a series boundary (the plates spec §2.3, the same cut plates/it.yml makes at
|
|
67
67
|
# 1999), so each of the two territorial formats appears twice: once with the
|
|
68
68
|
# national band and once with the EU band.
|
|
69
69
|
jurisdiction: ro
|
|
@@ -152,7 +152,7 @@ common:
|
|
|
152
152
|
the Government. These are reservations INSIDE the ordinary serial space, so
|
|
153
153
|
they are recorded here rather than authored as series: a reserved
|
|
154
154
|
combination changes who holds the plate, not the format or the design, and
|
|
155
|
-
|
|
155
|
+
the plates spec §2.3 makes that a note and not a series.
|
|
156
156
|
not_encoded_because: >-
|
|
157
157
|
The three restrictions above do not compose into a single sourced alphabet
|
|
158
158
|
(Q excluded everywhere? only in the letter group? is the leading-I/O rule
|
|
@@ -196,14 +196,14 @@ common:
|
|
|
196
196
|
phosphorescent holograms of the Romanian coat of arms running the length of
|
|
197
197
|
the plate. The SERIAL is not reported to change.
|
|
198
198
|
why_not_a_series: >-
|
|
199
|
-
A design change of that size WOULD be a series boundary under
|
|
199
|
+
A design change of that size WOULD be a series boundary under the plates spec
|
|
200
200
|
§2.3, and the honest reason it is not authored as one is that the entire
|
|
201
201
|
evidence for it is a single secondary summary with a month and no
|
|
202
202
|
instrument. Authoring `ro-standard-2024` on that basis would put a
|
|
203
203
|
confidently-dated series into the dataset on the weakest evidence in this
|
|
204
204
|
file. It is recorded here instead, and named as the FIRST target for the
|
|
205
205
|
Romanian verifier: find the instrument, and re-cut ro-standard-2007 at its
|
|
206
|
-
commencement date. The series-id contract (
|
|
206
|
+
commencement date. The series-id contract (the quality spec I-5/I-6) makes that
|
|
207
207
|
re-cut cheap — a new id plus an alias — which is precisely why waiting is
|
|
208
208
|
the cheap option and guessing is not.
|
|
209
209
|
source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Romania # the September 2024 security-feature generation. Accessed 2026-08-02"
|
|
@@ -265,7 +265,7 @@ series:
|
|
|
265
265
|
evidence_tier: secondary-wikipedia
|
|
266
266
|
notes: "see common.alphabet — the reported letter restrictions are recorded there and deliberately not encoded."
|
|
267
267
|
separator_note: >-
|
|
268
|
-
Both printed gaps are written as optional emitted SPACEs (
|
|
268
|
+
Both printed gaps are written as optional emitted SPACEs (the plates spec
|
|
269
269
|
§2.6). No separator GLYPH is prescribed by art. 23, which names three
|
|
270
270
|
element groups and no punctuation between them.
|
|
271
271
|
progression: >-
|
|
@@ -498,7 +498,7 @@ series:
|
|
|
498
498
|
notes: >-
|
|
499
499
|
THE MOTORCYCLE PLATE — the ordinary county mark on a 240 x 130 mm two-row
|
|
500
500
|
plate. Its own series rather than a variant because the dimensions differ
|
|
501
|
-
(
|
|
501
|
+
(the plates spec §2.3), and `corroboration-only` because the size is sourced
|
|
502
502
|
while the date is inherited. Romania does not appear to give motorcycles a
|
|
503
503
|
distinct serial grammar, which is worth stating as a negative: unlike Italy,
|
|
504
504
|
whose motorcycle plate had five digits where the car had three-plus-two,
|
|
@@ -568,7 +568,7 @@ series:
|
|
|
568
568
|
stopped with the 1992 reform, but these plates remained VALID UNTIL 2000,
|
|
569
569
|
so Romanian traffic ran both systems side by side for eight years and a
|
|
570
570
|
photograph from the 1990s proves nothing about a vehicle's registration
|
|
571
|
-
date. Recorded as a period overlap with distinct notes, per
|
|
571
|
+
date. Recorded as a period overlap with distinct notes, per the plates spec
|
|
572
572
|
§2.2, rather than as a clean cut.
|
|
573
573
|
|
|
574
574
|
# =========================================================================
|
|
@@ -682,7 +682,7 @@ series:
|
|
|
682
682
|
A TWO-PART NUMERIC DECODE: the first three digits are a country code
|
|
683
683
|
identifying the sending state and the last three a rank or sequence
|
|
684
684
|
within the mission, with 101 reported for an ambassador or head of
|
|
685
|
-
mission. The country-code table is NOT authored —
|
|
685
|
+
mission. The country-code table is NOT authored — the plates spec puts
|
|
686
686
|
diplomatic decode tables at gate L4, and plates/fi.yml made the same
|
|
687
687
|
call for the Finnish mission table. Note that this is a MISSION decode,
|
|
688
688
|
not a geographic one, and it does not touch ro-counties.yml.
|
|
@@ -697,7 +697,7 @@ series:
|
|
|
697
697
|
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Romania # secondary-wikipedia: CD plus six digits in blue, three-digit country code and three-digit rank code, 101 for the head of mission. FORMAT + COLOUR. Accessed 2026-08-02"
|
|
698
698
|
notes: >-
|
|
699
699
|
THE DIPLOMATIC CORPS PLATE. Authored despite an unsourced start date
|
|
700
|
-
because
|
|
700
|
+
because the plates spec gate L1 names diplomatic among the core classes, and
|
|
701
701
|
because the FORMAT and the DECODE MECHANISM are described well enough to be
|
|
702
702
|
useful; the date is the part this file admits it does not have, in the
|
|
703
703
|
period_note rather than in a footnote. A companion series TC — reported for
|
|
@@ -739,7 +739,7 @@ series:
|
|
|
739
739
|
unmodelled_series:
|
|
740
740
|
evidence_tier: secondary-wikipedia
|
|
741
741
|
source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Romania # every row below. Accessed 2026-08-02"
|
|
742
|
-
reason_not_modelled: "each lacks a defensible date, a determinate format, or both.
|
|
742
|
+
reason_not_modelled: "each lacks a defensible date, a determinate format, or both. The plates spec §5.3 prefers the recorded gap."
|
|
743
743
|
rows:
|
|
744
744
|
- token: "long-term temporary plate"
|
|
745
745
|
note: >-
|
|
@@ -777,7 +777,7 @@ unmodelled_series:
|
|
|
777
777
|
Reported for public utilities, tractors, agricultural machinery, scooters
|
|
778
778
|
and golf carts, valid only inside the issuing locality, on a yellow
|
|
779
779
|
ground — and, in the source's own words, of NON-STANDARDISED format
|
|
780
|
-
varying by issuing authority. That is a species
|
|
780
|
+
varying by issuing authority. That is a species the plates spec §2.2 cannot
|
|
781
781
|
represent as one series and should not: a format that varies by locality
|
|
782
782
|
is a table of formats, not a format. Recorded as the shape of the problem
|
|
783
783
|
for whoever attempts it.
|
data/data/plates/se.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/se.yml — Sweden (
|
|
1
|
+
# plates/se.yml — Sweden (the plates spec gate L1).
|
|
2
2
|
#
|
|
3
3
|
# EVERY format, colour, dimension and class claim here comes from one of four
|
|
4
4
|
# primary layers, and each series says which:
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
#
|
|
99
99
|
# SEPARATOR POLICY: the printed gap between letter group and digit group is a
|
|
100
100
|
# GAP, not a glyph — TSFS 2015:63 6 kap. 4 § says only "tre bokstäver till
|
|
101
|
-
# vänster och tre siffror till höger". Per
|
|
101
|
+
# vänster och tre siffror till höger". Per the plates spec §2.6 that gap is written
|
|
102
102
|
# as the emitted SPACE in `pattern` and as an optional " ?" in every regex.
|
|
103
103
|
#
|
|
104
104
|
# REGEX POLICY: `format.regex` is the lint-round-trippable regex over the full
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
# dimensions, colours, the black frame and the left/right and top/bottom
|
|
111
111
|
# arrangement of the character groups, and nothing else — no named font, no
|
|
112
112
|
# character height, no stroke width, and no statutory Schriftmuster of the
|
|
113
|
-
# German or Spanish kind. Per
|
|
113
|
+
# German or Spanish kind. Per the plates spec §6 the render layer therefore has no
|
|
114
114
|
# licensable font to clear and no drawing to derive from either; the schematic
|
|
115
115
|
# fallback applies and the gap is recorded.
|
|
116
116
|
jurisdiction: se
|
|
@@ -297,7 +297,7 @@ series:
|
|
|
297
297
|
separator_note: >-
|
|
298
298
|
The gap between letter group and digit group is a printed GAP with no
|
|
299
299
|
glyph (TSFS 2015:63 6 kap. 4 §: "tre bokstäver till vänster och tre
|
|
300
|
-
siffror till höger"). Written as the emitted SPACE per
|
|
300
|
+
siffror till höger"). Written as the emitted SPACE per the plates spec §2.6.
|
|
301
301
|
design:
|
|
302
302
|
plate: { w: 520, h: 110, unit: mm }
|
|
303
303
|
plate_variants:
|
|
@@ -325,7 +325,7 @@ series:
|
|
|
325
325
|
- "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 2-5 §: the four plate shapes, which vehicle gets which, the layout and colours, the EU mark; accessed 2026-08-02"
|
|
326
326
|
notes: >-
|
|
327
327
|
THE SWEDISH STANDARD PLATE, first shape. PERIOD DISAGREEMENT, RECORDED
|
|
328
|
-
RATHER THAN AVERAGED (
|
|
328
|
+
RATHER THAN AVERAGED (the plates spec §5.3): Transportstyrelsen says "1972"
|
|
329
329
|
twice in its own words (2017-02-17: "Dagens system för registreringsnummer
|
|
330
330
|
med tre bokstäver och tre siffror har funnits sedan 1972"; 2019-01-16:
|
|
331
331
|
"Senaste gången registreringsnumren ändrades var 1972"), and the
|
|
@@ -419,7 +419,7 @@ series:
|
|
|
419
419
|
|
|
420
420
|
# =========================================================================
|
|
421
421
|
# MOTORCYCLE AND MOPED KLASS I — the two-row 170x150 plate. Same numbers,
|
|
422
|
-
# different plate, so a series of its own (
|
|
422
|
+
# different plate, so a series of its own (the plates spec §2.3 design limb).
|
|
423
423
|
# =========================================================================
|
|
424
424
|
- id: se-motorcycle
|
|
425
425
|
class: motorcycle
|
|
@@ -461,7 +461,7 @@ series:
|
|
|
461
461
|
notes: >-
|
|
462
462
|
MOTORCYCLES AND MOPED KLASS I share ONE plate and one number system, so
|
|
463
463
|
they are one series with two categories rather than two series: the
|
|
464
|
-
|
|
464
|
+
the plates spec §2.3 test (own series iff format OR design OR period differs)
|
|
465
465
|
separates nothing between them. period.start follows the standard series
|
|
466
466
|
because the NUMBER is the same national number; the 170x150 plate itself
|
|
467
467
|
is younger — Transportstyrelsen announced the reduction on 2013-05-08 and
|
|
@@ -639,7 +639,7 @@ series:
|
|
|
639
639
|
släpslädar eller terrängsläp, bokstäverna 'LS'." Time-limited licences
|
|
640
640
|
additionally carry the expiry date stamped into the plate. Neither can
|
|
641
641
|
be expressed in a single `pattern` string — the same schema pressure
|
|
642
|
-
|
|
642
|
+
the plates spec §2.2 records for Japan.
|
|
643
643
|
design:
|
|
644
644
|
plate: { w: 520, h: 110, unit: mm }
|
|
645
645
|
plate_variants:
|
|
@@ -736,7 +736,7 @@ series:
|
|
|
736
736
|
region_encoding: "plates/_decode/se-diplomatic.yml"
|
|
737
737
|
region_encoding_note: >-
|
|
738
738
|
128 landskoder + 10 kategorikoder, both closed and primary. Held in a
|
|
739
|
-
_decode file rather than inline (
|
|
739
|
+
_decode file rather than inline (the plates spec §2.4) because 138 rows is well
|
|
740
740
|
past de.yml's Anlage-2 inline threshold.
|
|
741
741
|
sources:
|
|
742
742
|
- "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 12 kap. 1 a § (definitions of landskod and kategorikod, added by TSFS 2025:33), 12 kap. 2 § (six characters, black on light blue reflective, black frame), 12 kap. 3 § (the 2+3+1 composition, one-row and two-row); 6 kap. 6 § (no EU mark, no VIN marking); accessed 2026-08-02"
|
|
@@ -882,7 +882,7 @@ series:
|
|
|
882
882
|
"Du får använda alla bokstäver i svenska alfabetet, A-Ö" — so Å, Ä and
|
|
883
883
|
Ö ARE issued on personal plates, and they are OUTSIDE this dataset's
|
|
884
884
|
serial alphabet (_meta/separators.yml: "ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
|
885
|
-
0123456789" and nothing else). Per
|
|
885
|
+
0123456789" and nothing else). Per the plates spec §2.6 that is "a schema
|
|
886
886
|
amendment, not a data entry": the regexes here are therefore
|
|
887
887
|
deliberately NARROWER than the issuing grammar in that one respect,
|
|
888
888
|
which §2.7 confirms is still `strict`. A Swedish personal plate reading
|
|
@@ -897,7 +897,7 @@ series:
|
|
|
897
897
|
"Det får finnas mellanrum mellan tecknen under förutsättning att
|
|
898
898
|
teckenkombinationen inklusive mellanrum ryms på skylten. Ett mellanrum
|
|
899
899
|
tar samma plats på skylten som ett tecken." So a space COUNTS toward
|
|
900
|
-
the 2-7 budget. It is still an emitted separator per
|
|
900
|
+
the 2-7 budget. It is still an emitted separator per the plates spec §2.6
|
|
901
901
|
and is written as a bare literal inside an alternation, never inside a
|
|
902
902
|
mixed character class (§2.8).
|
|
903
903
|
forbidden_shapes: >-
|
|
@@ -961,7 +961,7 @@ series:
|
|
|
961
961
|
admits Å, Ä and Ö, which this dataset's serial alphabet cannot spell; it
|
|
962
962
|
treats O/0 and I/1 as THE SAME CHARACTER for allocation, which no regex
|
|
963
963
|
can express; and it counts a SPACE as a character position while
|
|
964
|
-
|
|
964
|
+
the plates spec §2.6 classifies space as a separator a lenient consumer may
|
|
965
965
|
delete — a consumer deriving a separator-free twin of this regex is
|
|
966
966
|
therefore doing something semantically different here than everywhere
|
|
967
967
|
else in the dataset. The character budget also grew: 2-6 under the 1988
|
|
@@ -1038,7 +1038,7 @@ series:
|
|
|
1038
1038
|
categories: [car, van, truck, bus, motorcycle, trailer, machine]
|
|
1039
1039
|
period: { start: 2009 }
|
|
1040
1040
|
period_evidence: instrument-in-force
|
|
1041
|
-
# RECALL-ONLY (
|
|
1041
|
+
# RECALL-ONLY (the plates spec §2.7): militärtrafikförordningen states the
|
|
1042
1042
|
# COLOURS and that the number is rendered in "gula siffror", and delegates
|
|
1043
1043
|
# everything else — length, grouping, any leading letters — to Försvars-
|
|
1044
1044
|
# makten's own föreskrifter, which were not reached in this pass. A 1-6
|
data/data/plates/si.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/si.yml — Slovenia (
|
|
1
|
+
# plates/si.yml — Slovenia (the plates spec gate L1, wave 2).
|
|
2
2
|
#
|
|
3
3
|
# EVERY format, colour, dimension and class claim here is read from the Uradni
|
|
4
4
|
# list Republike Slovenije, in the instruments' own published text, on
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
# glyph, and all three are primary. Every `pattern` here prints it.
|
|
41
41
|
# Slovenia's specimen drawings render it as a raised dot; the dataset writes
|
|
42
42
|
# the hyphen the LAW names, because U+00B7 is in the forgiving set of
|
|
43
|
-
# plates/_meta/separators.yml but not the emitted set (
|
|
43
|
+
# plates/_meta/separators.yml but not the emitted set (the plates spec §2.6).
|
|
44
44
|
#
|
|
45
45
|
# 3. THE CHARSET RULE IS THIRTY-FOUR YEARS OLD AND ALMOST UNCHANGED. 1992
|
|
46
46
|
# (15. člen): "se v registrski oznaki vozila ne uporablja črk O, Č, Š in Ž
|
|
@@ -148,7 +148,7 @@ common:
|
|
|
148
148
|
artwork_risk: unresearched
|
|
149
149
|
artwork_note: >-
|
|
150
150
|
Fifty-eight municipal coats of arms, each protected under its own
|
|
151
|
-
municipal instrument and none assessed in this pass.
|
|
151
|
+
municipal instrument and none assessed in this pass. The plates spec §3
|
|
152
152
|
applies: every series below carries `rendered: placeholder`.
|
|
153
153
|
source: "https://www.uradni-list.si/glasilo-uradni-list-rs/vsebina/2011-01-2292 # 28. člen. Accessed 2026-08-02"
|
|
154
154
|
alphabet:
|
|
@@ -240,7 +240,7 @@ common:
|
|
|
240
240
|
font:
|
|
241
241
|
name: null
|
|
242
242
|
statutory_basis: "31. člen, in its entirety: 'Podrobnosti o obliki zapisa na registrski tablici so navedene v tehnični specifikaciji.' One sentence, delegating everything, to a document the pravilnik does not name, publish or date — and which 55. člen then makes the trigger for 31. člen's own application. The specimen drawings in Priloga VI are the only published glyph evidence and carry no measurements."
|
|
243
|
-
licence: "
|
|
243
|
+
licence: "The plates spec §6 applies unchanged: derive glyphs from the drawings, never from a third-party TTF. Slovenia is a WEAKER case than Germany for a public-domain argument because the operative document is a procurement specification rather than a statutory annex. Recorded gap."
|
|
244
244
|
secondary_note: "en.wikipedia names the typeface as Helvetica. That is a secondary claim about a document this pass never saw, and it is recorded here rather than in any design block."
|
|
245
245
|
secondary_evidence: secondary-wikipedia
|
|
246
246
|
secondary_source: "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Slovenia # 'Text in Helvetica typeface'. Accessed 2026-08-02"
|
|
@@ -252,7 +252,7 @@ common:
|
|
|
252
252
|
federal system in 1991; authoring it in each national file would duplicate
|
|
253
253
|
a single historical layer, give it two ids, and let the two copies drift
|
|
254
254
|
apart under later correction. It belongs in ONE historical jurisdiction
|
|
255
|
-
file at gate L4 (
|
|
255
|
+
file at gate L4 (the plates spec §7 — "historical depth, the pre-2000 world"),
|
|
256
256
|
not twice at L1. What is recorded in each national file is the HINGE, from
|
|
257
257
|
that nation's own primary, so the L4 pass has two dated anchors to work
|
|
258
258
|
from.
|
|
@@ -704,7 +704,7 @@ series:
|
|
|
704
704
|
chosen marks on foreign-mission plates and on test plates.
|
|
705
705
|
why_recall_only: >-
|
|
706
706
|
The regex is deliberately wider than the issuing grammar and a match is
|
|
707
|
-
a shape hit only (
|
|
707
|
+
a shape hit only (the plates spec §2.7). It does not enforce the
|
|
708
708
|
three-character floor, does not count the hyphen against the six-character
|
|
709
709
|
budget, cannot express the O-excludes-0 rule, and cannot express
|
|
710
710
|
"kombinacija znakov, ki jo omogoča prostor na tablici" — a physical-fit
|
|
@@ -758,7 +758,7 @@ series:
|
|
|
758
758
|
kombinacija je lahko tudi izbirna."
|
|
759
759
|
recorded_conflict: >-
|
|
760
760
|
THE TEXT AND THE DRAWING DISAGREE, AND THE DISAGREEMENT IS RECORDED
|
|
761
|
-
RATHER THAN RESOLVED (
|
|
761
|
+
RATHER THAN RESOLVED (the plates spec §5.3). 40. člen (1) says the mark is
|
|
762
762
|
the ORDINARY four- or five-character combination, which by 30. člen (3)-(4)
|
|
763
763
|
means one of nine enumerated arrangements. Risba št. 9 of Priloga VI
|
|
764
764
|
shows the specimen "MV [grb] H1-001" — a letter followed by four digits,
|
|
@@ -873,7 +873,7 @@ series:
|
|
|
873
873
|
first numeric group is a COUNTRY code assigned by the agency — neither is
|
|
874
874
|
geographic in the si-regions.yml sense. The country-code table is not
|
|
875
875
|
published in the pravilnik ("ki jo določi agencija") and was not obtained
|
|
876
|
-
from any primary: a RECORDED GAP, and
|
|
876
|
+
from any primary: a RECORDED GAP, and the plates spec puts diplomatic decode
|
|
877
877
|
tables at gate L4 in any case.
|
|
878
878
|
sources:
|
|
879
879
|
- "https://www.uradni-list.si/glasilo-uradni-list-rs/vsebina/2011-01-2292 # 39. člen (1)-(3), 28. člen (2), 35. člen (5) (no chosen marks on these plates)"
|
data/data/plates/sk.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/sk.yml — Slovakia (
|
|
1
|
+
# plates/sk.yml — Slovakia (the plates spec gate L1, wave 2).
|
|
2
2
|
#
|
|
3
3
|
# EVERY claim below is read from slov-lex.sk, the Slovak government's own legal
|
|
4
4
|
# portal, in its OFFICIAL CONSOLIDATED PDFs. slov-lex publishes a dated version
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
# č. 227/2006 Z. z. Čl. I bod 13 replaced the words "za pomlčkou" with "za
|
|
50
50
|
# štátnym znakom Slovenskej republiky" throughout. Every regex in this file
|
|
51
51
|
# therefore spells that position as the separator-only class `[- ]?`
|
|
52
|
-
# (
|
|
52
|
+
# (the plates spec §2.8): a hyphen is what the law once prescribed and what Slovak
|
|
53
53
|
# text still commonly writes, a space is the printed gap, and neither is
|
|
54
54
|
# mandatory today.
|
|
55
55
|
#
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
# the commonly-quoted "Czechoslovak plates expired on 1 January 2005" is right
|
|
101
101
|
# but only became right by amendment. Both readings are recorded below. Neither
|
|
102
102
|
# country file duplicates the other silently and neither drops the era; a shared
|
|
103
|
-
# `cs-` file was rejected because
|
|
103
|
+
# `cs-` file was rejected because the plates spec §2.1 keys on ISO 3166-1 and CS is
|
|
104
104
|
# withdrawn with no authority left to cite.
|
|
105
105
|
#
|
|
106
106
|
# WHAT THIS PASS COULD NOT ESTABLISH, recorded rather than filled:
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
# colours quoted here come from the last instrument that stated them in
|
|
120
120
|
# words (vyhláška 225/2004 Z. z.) and from § 36 ods. 1 of vyhláška 9/2009
|
|
121
121
|
# as in force to 31 December 2022. Flagged per series.
|
|
122
|
-
# * WHICH MISSIONS HOLD WHICH EE/ZZ BLOCKS.
|
|
122
|
+
# * WHICH MISSIONS HOLD WHICH EE/ZZ BLOCKS. The plates spec puts diplomatic decode
|
|
123
123
|
# tables at L4; none is authored.
|
|
124
124
|
jurisdiction: sk
|
|
125
125
|
authority:
|
|
@@ -197,7 +197,7 @@ common:
|
|
|
197
197
|
90/1997 § 44 ods. 2 and vyhláška 225/2004 § 48 ods. 2 ("za pomlčkou") —
|
|
198
198
|
and vyhláška č. 227/2006 Z. z. Čl. I bod 13 replaced those words with "za
|
|
199
199
|
štátnym znakom Slovenskej republiky". Every regex here spells the position
|
|
200
|
-
`[- ]?`, the sanctioned separator-only class of
|
|
200
|
+
`[- ]?`, the sanctioned separator-only class of the plates spec §2.8, which
|
|
201
201
|
accepts the historic hyphen, the modern printed gap, and the closed-up
|
|
202
202
|
form Slovak registries and databases use. `pattern` prints a space for
|
|
203
203
|
post-2006 series and a hyphen for pre-2006 ones, matching what each plate
|
|
@@ -287,7 +287,7 @@ common:
|
|
|
287
287
|
geometry is the recorded gap here; between the two jurisdictions the
|
|
288
288
|
coverage is complementary and neither is complete.
|
|
289
289
|
licence: >-
|
|
290
|
-
|
|
290
|
+
the plates spec §6: derive from published geometry, never from a third-party
|
|
291
291
|
TTF. With no Slovak glyph geometry published at all, a renderer must use
|
|
292
292
|
the schematic fallback for this jurisdiction and record the substitution.
|
|
293
293
|
No Slovak public-domain-of-statutes provision was researched — recorded gap.
|
|
@@ -305,7 +305,7 @@ common:
|
|
|
305
305
|
keeping the same number.
|
|
306
306
|
note: >-
|
|
307
307
|
Modelled as a material option on the standard series rather than as a
|
|
308
|
-
separate series:
|
|
308
|
+
separate series: The plates spec §2.3 makes a variant its own series iff format,
|
|
309
309
|
design or period differs, and the illuminated plate shares all three
|
|
310
310
|
(§ 35 ods. 6 gives it the same black-on-white and the same 52 x 11 cm).
|
|
311
311
|
source: "https://www.slov-lex.sk/static/pdf/2009/8/ZZ_2009_8_20230101.pdf # § 123 ods. 3, 9, 12, 13. Accessed 2026-08-02"
|
|
@@ -391,7 +391,7 @@ series:
|
|
|
391
391
|
foreground_note: "'vypuklé' — embossed, not printed"
|
|
392
392
|
border: { color: "#000000", hex_basis: observed, note: "§ 35 ods. 10: 'Tabuľka s evidenčným číslom má na okraji vylisovanú obvodovú drážku, ktorej farba je totožná s farbou písmen a číslic' — an embossed peripheral groove in the character colour, carrying security features. No width is given, unlike the Czech 4 mm." }
|
|
393
393
|
band: { side: left, color: "#003399", content: eu-stars+SK, hex_basis: observed, geometry_note: "fully dimensioned — see common.euro_band.geometry" }
|
|
394
|
-
emblem: { present: true, rendered: placeholder, position: "between the first letter pair and the digits, in the separator position", content: "štátny znak Slovenskej republiky (the double cross on three hills)", dimensions: { h: 49, w: 38, unit: mm }, render_note: "
|
|
394
|
+
emblem: { present: true, rendered: placeholder, position: "between the first letter pair and the digits, in the separator position", content: "štátny znak Slovenskej republiky (the double cross on three hills)", dimensions: { h: 49, w: 38, unit: mm }, render_note: "The plates spec §3 placeholder rule: the Slovak state arms are not licence-cleared in this pass. The millimetres ARE published (vyhláška 227/2006 Čl. I bod 21) and are recorded so a renderer that clears them needs no further research." }
|
|
395
395
|
material_options: ["light alloy", "illuminated polycarbonate/polyester blend"]
|
|
396
396
|
rear_differs: false
|
|
397
397
|
display: "front and rear on categories M and N and on goods L7e quadricycles; rear only (centre or left) on L1e-L6e, O, R, PS and multi-purpose L7e — § 35 ods. 11"
|
|
@@ -423,7 +423,7 @@ series:
|
|
|
423
423
|
§ 143h it inserted is headed "Prechodné ustanovenie k úpravám účinným od
|
|
424
424
|
1. marca 2022", the fossil of an earlier plan that zákon č. 404/2021 Z. z.
|
|
425
425
|
postponed. THE FORMAT DID NOT CHANGE, which is why this series and its
|
|
426
|
-
predecessor share a regex and are separated by MEANING alone:
|
|
426
|
+
predecessor share a regex and are separated by MEANING alone: The plates spec
|
|
427
427
|
§2.3 makes a series its own iff format OR design OR period differs, and
|
|
428
428
|
here it is the region_encoding — a semantic, machine-readable difference
|
|
429
429
|
that a parse API must act on — plus the period. The pre-2023 plates were
|
|
@@ -683,7 +683,7 @@ series:
|
|
|
683
683
|
regex: '\A(?:EL|EV)[- ]?\d{3}[A-Z]{2}\z'
|
|
684
684
|
pattern_note: >-
|
|
685
685
|
THE PATTERN SHOWS THE EV FORM AND THE REGEX CARRIES BOTH, for a schema
|
|
686
|
-
reason rather than a legal one: the human-pattern DSL of
|
|
686
|
+
reason rather than a legal one: the human-pattern DSL of the plates spec §2.2
|
|
687
687
|
reserves L for "any letter", so a literal EL prefix cannot be spelled as a
|
|
688
688
|
pattern at all without meaning "E followed by any letter". EV is equally
|
|
689
689
|
canonical — § 35 ods. 7 offers the two as alternatives with no preference —
|
|
@@ -790,7 +790,7 @@ series:
|
|
|
790
790
|
from the district system's own start rather than sourced. Flagged for the
|
|
791
791
|
verifier as the first thing to check in this file. Modelled as its own
|
|
792
792
|
series rather than a variant because the FORMAT differs — a reserved letter
|
|
793
|
-
at a fixed position is a grammar difference, and
|
|
793
|
+
at a fixed position is a grammar difference, and the plates spec §2.3 makes that
|
|
794
794
|
a series.
|
|
795
795
|
|
|
796
796
|
# =========================================================================
|
|
@@ -814,7 +814,7 @@ series:
|
|
|
814
814
|
číslic" — which is why this series runs unbroken from 1997.
|
|
815
815
|
block_allocation: >-
|
|
816
816
|
NOT AUTHORED. Which mission holds which five-digit block is exactly the
|
|
817
|
-
decode
|
|
817
|
+
decode the plates spec defers to L4, and no instrument publishes it.
|
|
818
818
|
Recorded gap.
|
|
819
819
|
design:
|
|
820
820
|
plate: { w: 520, h: 110, unit: mm }
|
|
@@ -1307,8 +1307,8 @@ series:
|
|
|
1307
1307
|
words. A small provision that captures the whole reform: when the
|
|
1308
1308
|
prefix stopped meaning a place, it stopped being able to make a word.
|
|
1309
1309
|
matching_note: >-
|
|
1310
|
-
`matching: recall-only` (
|
|
1311
|
-
|
|
1310
|
+
`matching: recall-only` (the plates spec §2.7), and the test is the one the
|
|
1311
|
+
the spec sets: is this regex WIDER than what the authority issues? It is.
|
|
1312
1312
|
§ 124 ods. 2 admits any five-character tail "iná ako je uvedená
|
|
1313
1313
|
v odseku 1" — anything EXCEPT the ordinary three-digits-two-letters
|
|
1314
1314
|
arrangement — and no anchored regex in this dialect can subtract one
|
|
@@ -1366,7 +1366,7 @@ series:
|
|
|
1366
1366
|
code) and `regex` accepts all thirty-two combinations of five
|
|
1367
1367
|
alphanumerics. A match is a shape hit. The alternative — three
|
|
1368
1368
|
alternated branches inside one anchored regex — was rejected because
|
|
1369
|
-
each branch would straddle the separator position and
|
|
1369
|
+
each branch would straddle the separator position and the plates spec §2.8
|
|
1370
1370
|
forbids mixing separator and serial characters in one class.
|
|
1371
1371
|
strict_note: >-
|
|
1372
1372
|
The three enumerated shapes are all letter-initial and never place a
|
data/data/plates/sm.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/sm.yml — San Marino (
|
|
1
|
+
# plates/sm.yml — San Marino (the plates spec gate L1, microstates group).
|
|
2
2
|
# DRAFT for verification. All primary text fetched from the Consiglio Grande e
|
|
3
3
|
# Generale law archive (consigliograndeegenerale.sm), 2026-08-02.
|
|
4
4
|
#
|
|
@@ -239,7 +239,7 @@ common:
|
|
|
239
239
|
rule: >-
|
|
240
240
|
The "stemma ufficiale" appears in relief on every ordinary plate, at the
|
|
241
241
|
left. DD 132/2022 art. 2 binds it to the constitutional annex's
|
|
242
|
-
proportions and Pantones.
|
|
242
|
+
proportions and Pantones. The plates spec §3's placeholder rule applies: the
|
|
243
243
|
arms are a state emblem with no located clean licence, and the
|
|
244
244
|
constitutional annex was not fetched.
|
|
245
245
|
not_modelled:
|
|
@@ -373,7 +373,7 @@ series:
|
|
|
373
373
|
THE CURRENT ORDINARY SERIES. Same letter+four-digit grammar as 1993, but a
|
|
374
374
|
smaller FRONT plate (300x100 mm), a twentieth letter (U), and RAL 5017
|
|
375
375
|
blue from 1 July 2023. Modelled as its own series because the design
|
|
376
|
-
changed, per
|
|
376
|
+
changed, per the plates spec §2.3. Overlaps sm-standard-1993 across the
|
|
377
377
|
2022-2023 run-off, which is genuine parallel issuance provided for by the
|
|
378
378
|
decree itself. NOTE the motorcycle and moped series below are NOT split at
|
|
379
379
|
2022, because their plate SIZE did not change — only character metrics and
|
|
@@ -455,7 +455,7 @@ series:
|
|
|
455
455
|
separator_note: >-
|
|
456
456
|
PRINTED WITH DOTS as "R.S.M.". U+002E FULL STOP is in
|
|
457
457
|
_meta/separators.yml's FORGIVING set but not its EMITTED set, so
|
|
458
|
-
|
|
458
|
+
the plates spec §2.6 forbids writing it; the pattern spells "RSM" undotted
|
|
459
459
|
and a conformant consumer canonicalises a real "R.S.M. 123" to "RSM123",
|
|
460
460
|
which the separator-free twin matches. The same limitation as the Swiss
|
|
461
461
|
mid-height point.
|
|
@@ -520,7 +520,7 @@ series:
|
|
|
520
520
|
Modelled as one continuous series across the 2022 redesign because the
|
|
521
521
|
plate size did not change; the character metrics and the RAL 5017 colour
|
|
522
522
|
are dated design facts inside it. Contrast the car series, which IS split,
|
|
523
|
-
because its front plate shrank. This is the
|
|
523
|
+
because its front plate shrank. This is the plates spec §2.3 test producing
|
|
524
524
|
different answers on the same reform for different vehicle classes.
|
|
525
525
|
sources:
|
|
526
526
|
- "https://www.consigliograndeegenerale.sm/on-line/home/archivio-leggi-decreti-e-regolamenti/documento17021492.html # Decreto 109/1993 art. 1: 165x165 mm, letter + three digits"
|
|
@@ -1002,7 +1002,7 @@ series:
|
|
|
1002
1002
|
format_evidence: statutory
|
|
1003
1003
|
separator_note: >-
|
|
1004
1004
|
PRINTED WITH DOTS as "M.A.". As with the 1922 RSM series, U+002E is
|
|
1005
|
-
forgiving-but-not-emitted under
|
|
1005
|
+
forgiving-but-not-emitted under the plates spec §2.6, so the pattern spells
|
|
1006
1006
|
"MA" undotted and a conformant consumer canonicalises correctly.
|
|
1007
1007
|
progression: "Decreto 47/1990 art. 2: numbering adopted from 1010 for macchine agricole"
|
|
1008
1008
|
design:
|
|
@@ -1104,7 +1104,7 @@ series:
|
|
|
1104
1104
|
issued in green rather than blue — DD 22/2019 art. 2: "la serie
|
|
1105
1105
|
alfanumerica speciale scelta ed il bordo perimetrale saranno di colore
|
|
1106
1106
|
verde." A colour-only variant of the same format and period, so a
|
|
1107
|
-
sub-entry here rather than its own series, per
|
|
1107
|
+
sub-entry here rather than its own series, per the plates spec §2.3.
|
|
1108
1108
|
region_encoding: none
|
|
1109
1109
|
notes: >-
|
|
1110
1110
|
PERSONALIZED PLATES, from 2003. Priced at EUR 750 initially and EUR 900 a
|
data/data/plates/th.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# plates/th.yml — Thailand (
|
|
1
|
+
# plates/th.yml — Thailand (the plates spec gate L3). DRAFT for verification.
|
|
2
2
|
#
|
|
3
3
|
# EVERY size, layout, colour and class claim about the MOTOR-VEHICLE-ACT plates
|
|
4
4
|
# in this file comes from one instrument, read verbatim from the Royal Gazette
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
# this file models them as two blocks of series.
|
|
35
35
|
#
|
|
36
36
|
# 2. THE SERIAL IS PARTLY IN THAI SCRIPT, WHICH IS A GENUINE COLLISION WITH
|
|
37
|
-
#
|
|
37
|
+
# the plates spec §2.6. The separator contract fixes the dataset-wide serial
|
|
38
38
|
# alphabet at A-Z0-9 "and nothing else", and says in terms that a
|
|
39
39
|
# jurisdiction printing a glyph inside the serial "is a schema amendment,
|
|
40
40
|
# not a data entry". Thailand is that jurisdiction. The line taken here,
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
# block the plate prints — which is what §2.6 permits us to spell — and
|
|
45
45
|
# every such series therefore carries `matching: recall-only`, because a
|
|
46
46
|
# bare digit regex is deliberately wider than the mark it belongs to.
|
|
47
|
-
# * `format.fields` (the
|
|
47
|
+
# * `format.fields` (the spec §2.2 Japan extension point) carries the WHOLE
|
|
48
48
|
# composition, field by field, each with its script and its source.
|
|
49
49
|
# * `format.regex_native` carries the full Unicode-aware regex. It is NOT
|
|
50
50
|
# one of the three lint-checked regex keys (`regex`, `regex_strict`,
|
|
@@ -224,7 +224,7 @@ charset_defaults:
|
|
|
224
224
|
source: "https://web.archive.org/web/20171113165614/http://www.ratchakitcha.soc.go.th/DATA/PDF/2554/A/045/6.PDF # ข้อ ๓ (๑) (ก) ๕) and (ข) ๔) — the delegation"
|
|
225
225
|
|
|
226
226
|
# The pattern/regex policy, stated once and referenced by every Thai-script
|
|
227
|
-
# series (
|
|
227
|
+
# series (the plates spec §2.6 collision — see header fact 2).
|
|
228
228
|
regex_policy:
|
|
229
229
|
thai_script_series: >-
|
|
230
230
|
`format.pattern` is the ARABIC-NUMERAL BLOCK ONLY ("9999" = the registration
|
|
@@ -284,7 +284,7 @@ series:
|
|
|
284
284
|
# in the legal vehicle class, which is exactly why the regulation writes the
|
|
285
285
|
# sizes once in ข้อ ๓ (๑) (ก) and the colours eight times in ข้อ ๓ (๒).
|
|
286
286
|
# Because DESIGN differs (background and character colour), each is its own
|
|
287
|
-
# SERIES under
|
|
287
|
+
# SERIES under the plates spec §2.3 and not a colour sub-entry.
|
|
288
288
|
# =========================================================================
|
|
289
289
|
|
|
290
290
|
- id: th-private-car-2011
|
|
@@ -304,7 +304,7 @@ series:
|
|
|
304
304
|
`regex_native`, and the file header, fact 2.
|
|
305
305
|
regex_native: '\A[1-9]?[ก-ฮ]{2}\s?\d{1,4}\z'
|
|
306
306
|
regex_native_note: >-
|
|
307
|
-
Not lint-checked (
|
|
307
|
+
Not lint-checked (the plates spec §2.6 admits only A-Z0-9 in a serial). It
|
|
308
308
|
covers ONE LINE — the province name of line 2 is a separate field. The
|
|
309
309
|
letter positions are written as the whole Thai consonant range
|
|
310
310
|
U+0E01-U+0E2E because the category-letter alphabet is delegated and
|
|
@@ -355,7 +355,7 @@ series:
|
|
|
355
355
|
"ในแผ่นป้ายมีเครื่องหมายเป็นตัวอักษร ขส อยู่ภายในวงกลมอัดเป็นรอยดุนที่
|
|
356
356
|
มุมล่างด้านขวาของแผ่นป้าย" — the letters ขส (the DLT's abbreviation)
|
|
357
357
|
inside an embossed circle at the LOWER RIGHT corner, at a size the
|
|
358
|
-
Director-General fixes.
|
|
358
|
+
Director-General fixes. The plates spec §3 placeholder rule applies.
|
|
359
359
|
border: { note: "ขอบแผ่นป้ายอัดเป็นรอยดุน — the plate edge is embossed; the border takes the character colour (ข้อ ๓ (๒) (ค))" }
|
|
360
360
|
characters:
|
|
361
361
|
line1_digit_min_h_mm: 58
|
|
@@ -411,7 +411,7 @@ series:
|
|
|
411
411
|
PRIVATE PASSENGER VEHICLE of MORE than seven persons (รถยนต์นั่งส่วนบุคคล
|
|
412
412
|
เกินเจ็ดคน) — vans and minibuses in private ownership. Identical format and
|
|
413
413
|
size to the ordinary car plate; only the character colour differs, which
|
|
414
|
-
under
|
|
414
|
+
under the plates spec §2.3 would make it a sub-entry — except that the
|
|
415
415
|
regulation treats it as a distinct legal vehicle class with its own
|
|
416
416
|
colour rule, and the auction regulation of B.E. 2546 draws its own line at
|
|
417
417
|
"more than seven but not more than twelve", so it is carried as a series.
|
|
@@ -763,7 +763,7 @@ series:
|
|
|
763
763
|
fields:
|
|
764
764
|
- { name: corps_letter, section: left, line: 1, script: Thai, values: ["ท"], rule: "ข้อ ๓ (๑) (ค) ๓) ก): 'รถยนต์ของบุคคลในคณะผู้แทนทางการทูต ให้ใช้อักษร ท'" }
|
|
765
765
|
- { name: country_code, section: left, line: 2, script: "Arabic numerals", values: "a code standing for the country or the international organisation or UN specialised agency stationed in Thailand — the code list is not in the regulation" }
|
|
766
|
-
- { name: separator_bar, section: middle, note: "ขีดตามทางยาว, 1.1 cm wide x 4 cm long, embossed; a printed SEPARATOR, spelled '-' under
|
|
766
|
+
- { name: separator_bar, section: middle, note: "ขีดตามทางยาว, 1.1 cm wide x 4 cm long, embossed; a printed SEPARATOR, spelled '-' under the plates spec §2.6" }
|
|
767
767
|
- { name: registration_number, section: right, script: "Arabic numerals", values: "1 to 9999 (หมายเลขทะเบียนให้เริ่มตั้งแต่ ๑ ถึง ๙๙๙๙)" }
|
|
768
768
|
design:
|
|
769
769
|
plate: { w: 387, h: 110, unit: mm }
|
|
@@ -835,7 +835,7 @@ series:
|
|
|
835
835
|
สำหรับรถยนต์ของเจ้าพนักงานกงสุลกิตติมศักดิ์ ให้พื้นแผ่นป้ายใช้สีเทา
|
|
836
836
|
สะท้อนแสง โดยให้ตัวอักษร ตัวเลข และขีดใช้สีดำ" — a retroreflective GREY
|
|
837
837
|
ground with black characters, digits and bar. Colour-only variant of
|
|
838
|
-
the same format and period, so a sub-entry per
|
|
838
|
+
the same format and period, so a sub-entry per the plates spec §2.3.
|
|
839
839
|
sources:
|
|
840
840
|
- "https://web.archive.org/web/20171113165614/http://www.ratchakitcha.soc.go.th/DATA/PDF/2554/A/045/6.PDF # ข้อ ๓ (๒) (ซ) proviso"
|
|
841
841
|
sources:
|