polytypo 1.10.0 → 1.12.0

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/polytypo/data/VERSION +1 -1
  3. data/lib/polytypo/data/fixtures/bg.json +253 -0
  4. data/lib/polytypo/data/fixtures/cs.json +1 -1
  5. data/lib/polytypo/data/fixtures/de-CH.json +1 -1
  6. data/lib/polytypo/data/fixtures/de-DE.json +1 -1
  7. data/lib/polytypo/data/fixtures/el.json +1 -1
  8. data/lib/polytypo/data/fixtures/en-GB.json +1 -1
  9. data/lib/polytypo/data/fixtures/en-US.json +880 -3
  10. data/lib/polytypo/data/fixtures/es.json +1 -1
  11. data/lib/polytypo/data/fixtures/fi.json +1 -1
  12. data/lib/polytypo/data/fixtures/fr-CA.json +1 -1
  13. data/lib/polytypo/data/fixtures/fr.json +1 -1
  14. data/lib/polytypo/data/fixtures/hr.json +253 -0
  15. data/lib/polytypo/data/fixtures/hu.json +264 -0
  16. data/lib/polytypo/data/fixtures/it.json +1 -1
  17. data/lib/polytypo/data/fixtures/locale-resolution.json +1 -1
  18. data/lib/polytypo/data/fixtures/nl.json +1 -1
  19. data/lib/polytypo/data/fixtures/pl.json +1 -1
  20. data/lib/polytypo/data/fixtures/pt-BR.json +1 -1
  21. data/lib/polytypo/data/fixtures/pt-PT.json +1 -1
  22. data/lib/polytypo/data/fixtures/ro.json +234 -0
  23. data/lib/polytypo/data/fixtures/ru.json +1 -1
  24. data/lib/polytypo/data/fixtures/sk.json +278 -0
  25. data/lib/polytypo/data/fixtures/sv.json +1 -1
  26. data/lib/polytypo/data/fixtures/tr.json +1 -1
  27. data/lib/polytypo/data/fixtures/uk.json +1 -1
  28. data/lib/polytypo/data/locales/bg.json +82 -0
  29. data/lib/polytypo/data/locales/hr.json +82 -0
  30. data/lib/polytypo/data/locales/hu.json +88 -0
  31. data/lib/polytypo/data/locales/registry.json +7 -2
  32. data/lib/polytypo/data/locales/ro.json +82 -0
  33. data/lib/polytypo/data/locales/sk.json +94 -0
  34. data/lib/polytypo/data/rules/dashes.md +2 -1
  35. data/lib/polytypo/data/rules/modes.md +173 -72
  36. data/lib/polytypo/data/rules/order.json +1 -1
  37. data/lib/polytypo/data/rules/quotes.md +9 -0
  38. data/lib/polytypo/data/rules/ranges.md +6 -5
  39. data/lib/polytypo/data/schema/locale.schema.json +2 -2
  40. data/lib/polytypo/modes/yaml.rb +167 -29
  41. data/lib/polytypo/version.rb +1 -1
  42. metadata +11 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "es",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "fi",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "fr-CA",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "fr",
4
4
  "cases": [
5
5
  {
@@ -0,0 +1,253 @@
1
+ {
2
+ "spec": "1.12.0",
3
+ "locale": "hr",
4
+ "cases": [
5
+ {
6
+ "id": "hr-quotes-primary",
7
+ "rule": "quotes",
8
+ "mode": "text",
9
+ "in": "Rekao je: \"da\" i otišao.",
10
+ "out": "Rekao je: „da” i otišao.",
11
+ "note": "Hrvatski pravopis 8.16: the base form is „…” (U+201E, U+201D); the close is U+201D, not U+201C."
12
+ },
13
+ {
14
+ "id": "hr-quotes-nested-secondary",
15
+ "rule": "quotes",
16
+ "mode": "text",
17
+ "in": "Rekao je: \"pjesma 'Lijepa naša' je himna\" i otišao.",
18
+ "out": "Rekao je: „pjesma ‘Lijepa naša’ je himna” i otišao.",
19
+ "note": "Hrvatski pravopis 8.17: a quotation inside a quotation takes the single upper pair ‘…’ (U+2018, U+2019), not the low U+201A."
20
+ },
21
+ {
22
+ "id": "hr-quotes-nested-at-end",
23
+ "rule": "quotes",
24
+ "mode": "text",
25
+ "in": "Rekao je: \"pjesma 'Lijepa naša'\".",
26
+ "out": "Rekao je: „pjesma ‘Lijepa naša’”.",
27
+ "note": "Hrvatski pravopis 8.17: the inner level may end where the outer one does; the secondary pair differs from the primary, so nothing is declined."
28
+ },
29
+ {
30
+ "id": "hr-quotes-two-pairs",
31
+ "rule": "quotes",
32
+ "mode": "text",
33
+ "in": "x \"a\" y \"b 'c'\"",
34
+ "out": "x „a” y „b ‘c’”",
35
+ "note": "Two sibling pairs, the second with a nest: both are typeset."
36
+ },
37
+ {
38
+ "id": "hr-quotes-already-typeset-kept",
39
+ "rule": "quotes",
40
+ "mode": "text",
41
+ "in": "Rekao je: „pjesma ‘Lijepa naša’ je himna” i otišao.",
42
+ "out": "Rekao je: „pjesma ‘Lijepa naša’ je himna” i otišao.",
43
+ "note": "Already typeset at both levels: left as it is."
44
+ },
45
+ {
46
+ "id": "hr-quotes-no-inner-space",
47
+ "rule": "quotes",
48
+ "mode": "text",
49
+ "in": "„ da ”",
50
+ "out": "„da”",
51
+ "note": "Hrvatski pravopis 8.16: no space after the opening or before the closing mark."
52
+ },
53
+ {
54
+ "id": "hr-ellipsis-three-dots",
55
+ "rule": "ellipsis",
56
+ "mode": "text",
57
+ "in": "Čekaj... što?",
58
+ "out": "Čekaj… što?",
59
+ "note": "Hrvatski pravopis 8.10: three dots become the single ellipsis character."
60
+ },
61
+ {
62
+ "id": "hr-ellipsis-not-abbreviated",
63
+ "rule": "ellipsis",
64
+ "mode": "text",
65
+ "in": "Što?.. da",
66
+ "out": "Što?… da",
67
+ "note": "abbreviatedAfterTerminal is false: `?..` is an ordinary ellipsis after the question mark, not a two-dot abbreviated one (decision; neither 8.10 nor 8.3 states a two-dot form)."
68
+ },
69
+ {
70
+ "id": "hr-dashes-parenthetical",
71
+ "rule": "dashes",
72
+ "mode": "text",
73
+ "in": "Idemo - ako pada - kasnije.",
74
+ "out": "Idemo – ako pada – kasnije.",
75
+ "note": "Hrvatski pravopis 8.14: the dash is written with a space on each side; U+2013 read from rendered text."
76
+ },
77
+ {
78
+ "id": "hr-dashes-existing-em-dash",
79
+ "rule": "dashes",
80
+ "mode": "text",
81
+ "in": "Idemo — ako pada — kasnije.",
82
+ "out": "Idemo – ako pada – kasnije.",
83
+ "note": "An authored em dash becomes the locale's en dash: 8.14 does not mention U+2014."
84
+ },
85
+ {
86
+ "id": "hr-ranges-year-tight-untouched",
87
+ "rule": "ranges",
88
+ "mode": "text",
89
+ "in": "2010.-2012.",
90
+ "out": "2010.-2012.",
91
+ "note": "ranges.md §3.2: the left flank of the hyphen is the ordinal period U+002E, not a digit, so this attested year form is not a range candidate and stays as typed.",
92
+ "rules": {
93
+ "ranges": true
94
+ }
95
+ },
96
+ {
97
+ "id": "hr-ranges-year-spaced-gets-en-dash",
98
+ "rule": "ranges",
99
+ "mode": "text",
100
+ "in": "2010. - 2012.",
101
+ "out": "2010. – 2012.",
102
+ "note": "ranges.md §3: a spaced hyphen between years is taken by the dashes rule and becomes the spaced en dash that 8.14 prints («2010. – 2012.»).",
103
+ "rules": {
104
+ "ranges": true
105
+ }
106
+ },
107
+ {
108
+ "id": "hr-ranges-digits",
109
+ "rule": "ranges",
110
+ "mode": "text",
111
+ "in": "Posjeti: 15-17 i 30-45",
112
+ "out": "Posjeti: 15 – 17 i 30 – 45",
113
+ "note": "ranges.md §3: 8.1 prints «Posjeti: 15 – 17»; digit-to-digit hyphens take the spaced en dash.",
114
+ "rules": {
115
+ "ranges": true
116
+ }
117
+ },
118
+ {
119
+ "id": "hr-ranges-page-range-spaced",
120
+ "rule": "ranges",
121
+ "mode": "text",
122
+ "in": "str. 145-162",
123
+ "out": "str. 145 – 162",
124
+ "note": "ranges.md §3: ACCEPTED COST. 8.14 writes bibliographic page ranges tight («str. 145–162»), but locale data cannot select by context, so the rule spaces them (the ranges rule is off by default).",
125
+ "rules": {
126
+ "ranges": true
127
+ }
128
+ },
129
+ {
130
+ "id": "hr-ranges-word-hyphen-untouched",
131
+ "rule": "ranges",
132
+ "mode": "text",
133
+ "in": "Zagreb-Split i hrvatsko-engleski",
134
+ "out": "Zagreb-Split i hrvatsko-engleski",
135
+ "note": "ranges.md §3: a hyphenated word is not a digit range and is left alone.",
136
+ "rules": {
137
+ "ranges": true
138
+ }
139
+ },
140
+ {
141
+ "id": "hr-hyphen-noop",
142
+ "rule": "hyphen",
143
+ "mode": "text",
144
+ "in": "hrvatsko-engleski rječnik i bez-",
145
+ "out": "hrvatsko-engleski rječnik i bez-",
146
+ "note": "Hrvatski pravopis 8.13: breaking at a hyphen is provided for and no closed list ships, so nothing changes."
147
+ },
148
+ {
149
+ "id": "hr-nbsp-units",
150
+ "rule": "nbsp",
151
+ "mode": "text",
152
+ "in": "3 kg, 50 %, 0,5 ‰, 99,90 € i 5 °C",
153
+ "out": "3 kg, 50 %, 0,5 ‰, 99,90 € i 5 °C",
154
+ "note": "Hrvatski pravopis 8.1 and 8.19.11: a space separates the number from the unit, percent, per-mille, currency sign and degree Celsius."
155
+ },
156
+ {
157
+ "id": "hr-nbsp-single-letter-unit-inert",
158
+ "rule": "nbsp",
159
+ "mode": "text",
160
+ "in": "2 m, 220 V i 60 W",
161
+ "out": "2 m, 220 V i 60 W",
162
+ "note": "Single-letter symbols are excluded by decision (8.1 writes «2 m» with a space), as in sk and bg."
163
+ },
164
+ {
165
+ "id": "hr-nbsp-defunct-currency-inert",
166
+ "rule": "nbsp",
167
+ "mode": "text",
168
+ "in": "34 kn",
169
+ "out": "34 kn",
170
+ "note": "kn is excluded as defunct (decision, not citation); 8.1 still prints «34 kn»."
171
+ },
172
+ {
173
+ "id": "hr-nbsp-article-sign",
174
+ "rule": "nbsp",
175
+ "mode": "text",
176
+ "in": "§ 25. i § 3",
177
+ "out": "§ 25. i § 3",
178
+ "note": "Hrvatski pravopis 8.1 and 8.19.8: the section sign is separated from its number by a space."
179
+ },
180
+ {
181
+ "id": "hr-nbsp-page-abbreviation",
182
+ "rule": "nbsp",
183
+ "mode": "text",
184
+ "in": "str. 12",
185
+ "out": "str. 12",
186
+ "note": "beforeNumber lists str., from «str. 145–162» in 8.14 (form evidence; a decision, MEDIUM)."
187
+ },
188
+ {
189
+ "id": "hr-nbsp-complex-abbreviations",
190
+ "rule": "nbsp",
191
+ "mode": "text",
192
+ "in": "tvrtka d. o. o. i dipl. ing. Ivo",
193
+ "out": "tvrtka d. o. o. i dipl. ing. Ivo",
194
+ "note": "Hrvatski pravopis 8.13 rule 6: complex abbreviations such as dipl. ing. and d. o. o. should not be split at a line end."
195
+ },
196
+ {
197
+ "id": "hr-nbsp-other-abbreviations-inert",
198
+ "rule": "nbsp",
199
+ "mode": "text",
200
+ "in": "d. d. i dr. sc. Ana",
201
+ "out": "d. d. i dr. sc. Ana",
202
+ "note": "The other spaced abbreviations of 7.1 are not listed: extending 8.13's line-break intent to them would be a derivation, not a citation."
203
+ },
204
+ {
205
+ "id": "hr-nbsp-short-words-inert",
206
+ "rule": "nbsp",
207
+ "mode": "text",
208
+ "in": "u kući i s prijateljem",
209
+ "out": "u kući i s prijateljem",
210
+ "note": "afterShortWords ships empty: no online section of the pravopis states a rule for one-letter prepositions or conjunctions at a line end."
211
+ },
212
+ {
213
+ "id": "hr-nbsp-initials-unbound",
214
+ "rule": "nbsp",
215
+ "mode": "text",
216
+ "in": "A. G. Matoš",
217
+ "out": "A. G. Matoš",
218
+ "note": "initialBinding is none: 7.3 and 8.1 give the spaced form of initials and say nothing about line breaks."
219
+ },
220
+ {
221
+ "id": "hr-nbsp-no-space-before-question",
222
+ "rule": "nbsp",
223
+ "mode": "text",
224
+ "in": "Što ? Da !",
225
+ "out": "Što? Da!",
226
+ "note": "Hrvatski pravopis 8.1: no space before ? and !, so nothing is put back."
227
+ },
228
+ {
229
+ "id": "hr-spaces-brackets",
230
+ "rule": "spaces",
231
+ "mode": "text",
232
+ "in": "Tekst ( normalan ) ostaje .",
233
+ "out": "Tekst (normalan) ostaje.",
234
+ "note": "spaces.md: brackets tighten, no space before the final stop."
235
+ },
236
+ {
237
+ "id": "hr-symbols-copyright",
238
+ "rule": "symbols",
239
+ "mode": "text",
240
+ "in": "Copyright (c) 2026",
241
+ "out": "Copyright © 2026",
242
+ "note": "symbols rule, locale-neutral."
243
+ },
244
+ {
245
+ "id": "hr-apostrophe-foreign-name",
246
+ "rule": "apostrophe",
247
+ "mode": "text",
248
+ "in": "To je McDonald's",
249
+ "out": "To je McDonald’s",
250
+ "note": "apostrophe rule, locale-neutral; 8.18 uses U+2019 for the elision mark as well."
251
+ }
252
+ ]
253
+ }
@@ -0,0 +1,264 @@
1
+ {
2
+ "spec": "1.12.0",
3
+ "locale": "hu",
4
+ "cases": [
5
+ {
6
+ "id": "hu-quotes-primary",
7
+ "rule": "quotes",
8
+ "mode": "text",
9
+ "in": "Azt mondta: \"szia\" és elment.",
10
+ "out": "Azt mondta: „szia” és elment.",
11
+ "note": "AkH12 §240 j: the base form is „…” (U+201E, U+201D)."
12
+ },
13
+ {
14
+ "id": "hu-quotes-not-german",
15
+ "rule": "quotes",
16
+ "mode": "text",
17
+ "in": "„szia“",
18
+ "out": "„szia”",
19
+ "note": "U+201C as a closing mark is the German form; AkH12 §240 j closes with U+201D."
20
+ },
21
+ {
22
+ "id": "hu-quotes-nested",
23
+ "rule": "quotes",
24
+ "mode": "text",
25
+ "in": "\"Ő azt mondta 'jó' volt\"",
26
+ "out": "„Ő azt mondta »jó« volt”",
27
+ "note": "AkH12 §257: a quote inside a quote takes the lúdlábidézőjel »…« (opens with U+00BB, the reverse of ro)."
28
+ },
29
+ {
30
+ "id": "hu-quotes-nested-guillemets-kept",
31
+ "rule": "quotes",
32
+ "mode": "text",
33
+ "in": "„Ő azt mondta »jó« volt”",
34
+ "out": "„Ő azt mondta »jó« volt”",
35
+ "note": "Already typeset: both levels are left as they are."
36
+ },
37
+ {
38
+ "id": "hu-quotes-no-inner-space",
39
+ "rule": "quotes",
40
+ "mode": "text",
41
+ "in": "„ szia ”",
42
+ "out": "„szia”",
43
+ "note": "AkH12 §240 j: the marks attach to the words they enclose, no inner space."
44
+ },
45
+ {
46
+ "id": "hu-ellipsis-three-dots",
47
+ "rule": "ellipsis",
48
+ "mode": "text",
49
+ "in": "Várj... mi?",
50
+ "out": "Várj… mi?",
51
+ "note": "AkH12 §240 b: three dots, attached to the preceding word."
52
+ },
53
+ {
54
+ "id": "hu-ellipsis-not-abbreviated",
55
+ "rule": "ellipsis",
56
+ "mode": "text",
57
+ "in": "Tényleg?.. igen",
58
+ "out": "Tényleg?… igen",
59
+ "note": "abbreviatedAfterTerminal is false: `?..` is a typing slip, not an abbreviated ellipsis."
60
+ },
61
+ {
62
+ "id": "hu-dashes-parenthetical",
63
+ "rule": "dashes",
64
+ "mode": "text",
65
+ "in": "Holnap - ha esik - elmegyünk.",
66
+ "out": "Holnap – ha esik – elmegyünk.",
67
+ "note": "AkH12 §240 g, §252: en dash with a space on both sides."
68
+ },
69
+ {
70
+ "id": "hu-dashes-existing-em-dash",
71
+ "rule": "dashes",
72
+ "mode": "text",
73
+ "in": "Holnap — ha esik — elmegyünk.",
74
+ "out": "Holnap – ha esik – elmegyünk.",
75
+ "note": "An authored em dash becomes the locale's en dash."
76
+ },
77
+ {
78
+ "id": "hu-dashes-tight-compound-kept",
79
+ "rule": "dashes",
80
+ "mode": "text",
81
+ "in": "Budapest–Bécs és Osztrák–Magyar",
82
+ "out": "Budapest–Bécs és Osztrák–Magyar",
83
+ "note": "AkH12 §264 c: the tight en dash is already correct, no spaces are added."
84
+ },
85
+ {
86
+ "id": "hu-ranges-years-and-pages",
87
+ "rule": "ranges",
88
+ "mode": "text",
89
+ "in": "az 1983-1984. évi és az 1-4. osztályban",
90
+ "out": "az 1983⁠–⁠1984. évi és az 1⁠–⁠4. osztályban",
91
+ "note": "ranges.md §3: AkH12 §264 c attaches the en dash to its members (1983–1984. évi, az 1–4. osztályban); the word joiners are the spec's line-break guard.",
92
+ "rules": {
93
+ "ranges": true
94
+ }
95
+ },
96
+ {
97
+ "id": "hu-ranges-spaced-input-tightened",
98
+ "rule": "ranges",
99
+ "mode": "text",
100
+ "in": "1 - 4 oldal",
101
+ "out": "1⁠–⁠4 oldal",
102
+ "note": "ranges.md §3: en-tight takes the spaced form of a digit range to the tight one.",
103
+ "rules": {
104
+ "ranges": true
105
+ }
106
+ },
107
+ {
108
+ "id": "hu-ranges-en-dash-kept",
109
+ "rule": "ranges",
110
+ "mode": "text",
111
+ "in": "1914–1918 és Budapest–Bécs",
112
+ "out": "1914–1918 és Budapest–Bécs",
113
+ "note": "ranges.md §3: an authored tight en dash is the correct form and is kept.",
114
+ "rules": {
115
+ "ranges": true
116
+ }
117
+ },
118
+ {
119
+ "id": "hu-ranges-complex-spaced-kept",
120
+ "rule": "ranges",
121
+ "mode": "text",
122
+ "in": "2011. április 25. – 2012. május 13.",
123
+ "out": "2011. április 25. – 2012. május 13.",
124
+ "note": "ranges.md §3: AkH12 §264 c allows the spaced en dash for complex members; a '.' beside the space keeps it out of the range candidates.",
125
+ "rules": {
126
+ "ranges": true
127
+ }
128
+ },
129
+ {
130
+ "id": "hu-ranges-ordinal-shape-declined",
131
+ "rule": "ranges",
132
+ "mode": "text",
133
+ "in": "a 128-9. lapon",
134
+ "out": "a 128-9. lapon",
135
+ "note": "ranges.md §3.2: AkH12 §264 c prints «a 128–9. lapon», but the shape (3,1) is declined by G4, so a typed hyphen stays a hyphen. Accepted miss, as `2020-24` in en-US.",
136
+ "rules": {
137
+ "ranges": true
138
+ }
139
+ },
140
+ {
141
+ "id": "hu-ranges-word-hyphen-untouched",
142
+ "rule": "ranges",
143
+ "mode": "text",
144
+ "in": "Budapest-Bécs út",
145
+ "out": "Budapest-Bécs út",
146
+ "note": "ranges.md §3: words joined by a hyphen are not a digit range and are left alone.",
147
+ "rules": {
148
+ "ranges": true
149
+ }
150
+ },
151
+ {
152
+ "id": "hu-hyphen-noop",
153
+ "rule": "hyphen",
154
+ "mode": "text",
155
+ "in": "A MÁV-ot és a tűzzel-vassal",
156
+ "out": "A MÁV-ot és a tűzzel-vassal",
157
+ "note": "AkH12 §270 permits breaking at a hyphen; no list ships, nothing changes."
158
+ },
159
+ {
160
+ "id": "hu-nbsp-units",
161
+ "rule": "nbsp",
162
+ "mode": "text",
163
+ "in": "100 km, 1 kg, 10 kWh és 120 km/h",
164
+ "out": "100 km, 1 kg, 10 kWh és 120 km/h",
165
+ "note": "AkH12 §279 c: a space separates the unit from its number."
166
+ },
167
+ {
168
+ "id": "hu-nbsp-celsius",
169
+ "rule": "nbsp",
170
+ "mode": "text",
171
+ "in": "23 °C",
172
+ "out": "23 °C",
173
+ "note": "AkH12 §275: «23 °C» with a space."
174
+ },
175
+ {
176
+ "id": "hu-nbsp-percent-inert",
177
+ "rule": "nbsp",
178
+ "mode": "text",
179
+ "in": "48 % és 48%",
180
+ "out": "48 % és 48%",
181
+ "note": "AkH12 §275 prints 48% without a space, so % is not a unit here and nothing is bound."
182
+ },
183
+ {
184
+ "id": "hu-nbsp-single-letter-unit-inert",
185
+ "rule": "nbsp",
186
+ "mode": "text",
187
+ "in": "220 W és 5 s",
188
+ "out": "220 W és 5 s",
189
+ "note": "Single-letter symbols are excluded by decision, not by citation (AkH12 §279 c writes «220 W» with a space): `s` is a Hungarian conjunction."
190
+ },
191
+ {
192
+ "id": "hu-nbsp-forint-inert",
193
+ "rule": "nbsp",
194
+ "mode": "text",
195
+ "in": "2890 Ft",
196
+ "out": "2890 Ft",
197
+ "note": "Ft is attested only by example (§290) and ships unverified: nothing is bound."
198
+ },
199
+ {
200
+ "id": "hu-nbsp-abbreviations",
201
+ "rule": "nbsp",
202
+ "mode": "text",
203
+ "in": "Kr. e. 44-ben, Kr. u. 2. században, i. sz. 3. század",
204
+ "out": "Kr. e. 44-ben, Kr. u. 2. században, i. sz. 3. század",
205
+ "note": "AkH12 §277 a, §284: abbreviations written with an internal space; N4 binds it."
206
+ },
207
+ {
208
+ "id": "hu-nbsp-abbreviations-short",
209
+ "rule": "nbsp",
210
+ "mode": "text",
211
+ "in": "a. m. annyi mint, s. k. aláírás",
212
+ "out": "a. m. annyi mint, s. k. aláírás",
213
+ "note": "AkH12 §277 a: a. m. and s. k."
214
+ },
215
+ {
216
+ "id": "hu-nbsp-initials-unbound",
217
+ "rule": "nbsp",
218
+ "mode": "text",
219
+ "in": "Kossuth L. és L. Kossuth",
220
+ "out": "Kossuth L. és L. Kossuth",
221
+ "note": "initialBinding is none: AkH12 has no rule on initials."
222
+ },
223
+ {
224
+ "id": "hu-nbsp-no-space-before-question",
225
+ "rule": "nbsp",
226
+ "mode": "text",
227
+ "in": "Tényleg ? Igen !",
228
+ "out": "Tényleg? Igen!",
229
+ "note": "AkH12 §240 c: no space before ? and !, so nothing is put back."
230
+ },
231
+ {
232
+ "id": "hu-nbsp-paragraph-sign-inert",
233
+ "rule": "nbsp",
234
+ "mode": "text",
235
+ "in": "a 4. § szerint",
236
+ "out": "a 4. § szerint",
237
+ "note": "AkH12 §275 writes '4. §' with the number first; afterSymbols ships empty."
238
+ },
239
+ {
240
+ "id": "hu-spaces-brackets",
241
+ "rule": "spaces",
242
+ "mode": "text",
243
+ "in": "Szöveg ( rendes ) marad .",
244
+ "out": "Szöveg (rendes) marad.",
245
+ "note": "spaces.md: brackets tighten, no space before the final stop."
246
+ },
247
+ {
248
+ "id": "hu-symbols-copyright",
249
+ "rule": "symbols",
250
+ "mode": "text",
251
+ "in": "Copyright (c) 2026",
252
+ "out": "Copyright © 2026",
253
+ "note": "symbols rule, locale-neutral."
254
+ },
255
+ {
256
+ "id": "hu-apostrophe-foreign-name",
257
+ "rule": "apostrophe",
258
+ "mode": "text",
259
+ "in": "Ez a McDonald's",
260
+ "out": "Ez a McDonald’s",
261
+ "note": "apostrophe rule, locale-neutral."
262
+ }
263
+ ]
264
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "it",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "cases": [
4
4
  {
5
5
  "id": "exact-en-us",
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "nl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "pl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "pt-BR",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "pt-PT",
4
4
  "cases": [
5
5
  {