polytypo 1.14.0 → 1.15.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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/polytypo/data/VERSION +1 -1
  3. data/lib/polytypo/data/fixtures/bg.json +1 -1
  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 +1 -1
  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 +1 -1
  15. data/lib/polytypo/data/fixtures/hu.json +1 -1
  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 +1 -1
  23. data/lib/polytypo/data/fixtures/ru.json +1 -1
  24. data/lib/polytypo/data/fixtures/sk.json +1 -1
  25. data/lib/polytypo/data/fixtures/sl.json +247 -0
  26. data/lib/polytypo/data/fixtures/sr.json +1 -1
  27. data/lib/polytypo/data/fixtures/sv.json +1 -1
  28. data/lib/polytypo/data/fixtures/tr.json +1 -1
  29. data/lib/polytypo/data/fixtures/uk.json +1 -1
  30. data/lib/polytypo/data/locales/registry.json +3 -2
  31. data/lib/polytypo/data/locales/sl.json +82 -0
  32. data/lib/polytypo/data/rules/order.json +1 -1
  33. data/lib/polytypo/version.rb +1 -1
  34. metadata +3 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40f4b8a41c44a06a195e83cbc9d8928d82b6ae5ae314c22e263063451fee27d8
4
- data.tar.gz: f1a9c674f4bb0fac75872802b3ede5c10063a85cb4c80919a737aa6f49a2c640
3
+ metadata.gz: d2bab0efc918f7a01ecea6058420525619d73371f49a994d4b96298493634823
4
+ data.tar.gz: e61264965c63d676674b02c1f2b52a2363b50c567cad449eb83d6f08e8b6b85b
5
5
  SHA512:
6
- metadata.gz: d29173f633da9a14abffef5db46f2052fdd5928429b35192865cf677aa3503d0e8b836f2eb9d66dea9a8a4d8b315008ff2367673d3992e98c6e87c012f26a8e5
7
- data.tar.gz: 37aeef545d793fb1a99659c7fc1d2f9ebfce3c24800a16060d3d3f4597dccd8b091fe3d2097ca2008bd9a0675730fe380f5d5732ed61f6a904ab1e91645c7baa
6
+ metadata.gz: 7c1e0d2fad416baf3b346ba6d4364e7b5ad27f29dc3b92c51dc94a79a31a5dc4c0beaddc1eb701cb15419b5a186d8632e39aa06c7862a8a542751d0093f5091e
7
+ data.tar.gz: bab8b97e60ee90d1758373f8e05f061e7647ca3f0c56d432d8d7cdccc8a0ab727e4ac0f585049178c6f5295eeb5664fbbd01ccc573fbc737e80455a7a5d6c26e
@@ -1 +1 @@
1
- 1.14.0
1
+ 1.15.0
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "bg",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "cs",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "de-CH",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "de-DE",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "el",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "en-GB",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "en-US",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "es",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "fi",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "fr-CA",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "fr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "hr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "hu",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "it",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "cases": [
4
4
  {
5
5
  "id": "exact-en-us",
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "nl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "pl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "pt-BR",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "pt-PT",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "ro",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "ru",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "sk",
4
4
  "cases": [
5
5
  {
@@ -0,0 +1,247 @@
1
+ {
2
+ "spec": "1.15.0",
3
+ "locale": "sl",
4
+ "cases": [
5
+ {
6
+ "id": "sl-quotes-primary",
7
+ "rule": "quotes",
8
+ "mode": "text",
9
+ "in": "Rekel je: \"da\" in odšel.",
10
+ "out": "Rekel je: »da« in odšel.",
11
+ "note": "Slovenski pravopis 2001 §461 lists the double middle pair » « (U+00BB open, U+00AB close) first and every example uses it; chosen by decision. The low-high pair is handwriting (§465)."
12
+ },
13
+ {
14
+ "id": "sl-quotes-nested-secondary",
15
+ "rule": "quotes",
16
+ "mode": "text",
17
+ "in": "Rekel je: \"pesem 'Zdravljica' je himna\" in odšel.",
18
+ "out": "Rekel je: »pesem ›Zdravljica‹ je himna« in odšel.",
19
+ "note": "Slovenski pravopis 2001 §461: a quotation inside a quotation takes the single middle pair › ‹ (U+203A, U+2039), by decision (§463's own example nests „…“ and ‚…‘)."
20
+ },
21
+ {
22
+ "id": "sl-quotes-nested-at-end",
23
+ "rule": "quotes",
24
+ "mode": "text",
25
+ "in": "Rekel je: \"pesem 'Zdravljica'\".",
26
+ "out": "Rekel je: »pesem ›Zdravljica‹«.",
27
+ "note": "Slovenski pravopis 2001 §463: the inner level may end where the outer one does."
28
+ },
29
+ {
30
+ "id": "sl-quotes-before-question-mark",
31
+ "rule": "quotes",
32
+ "mode": "text",
33
+ "in": "Ali res? \"Da!\" je rekel.",
34
+ "out": "Ali res? »Da!« je rekel.",
35
+ "note": "Slovenski pravopis 2001 §461: the close U+00AB follows the sentence mark flush; innerSpace is none."
36
+ },
37
+ {
38
+ "id": "sl-quotes-question-inside",
39
+ "rule": "quotes",
40
+ "mode": "text",
41
+ "in": "\"Kaj?\" je vprašal.",
42
+ "out": "»Kaj?« je vprašal.",
43
+ "note": "Slovenski pravopis 2001 §461: a quote that opens a sentence takes U+00BB, flush against the text."
44
+ },
45
+ {
46
+ "id": "sl-quotes-reversed-guillemets",
47
+ "rule": "quotes",
48
+ "mode": "text",
49
+ "in": "Rekel je «da» in odšel.",
50
+ "out": "Rekel je »da« in odšel.",
51
+ "note": "Slovenski pravopis 2001 §461: input with the guillemets the French way round is normalised to » « (U+00BB open, U+00AB close)."
52
+ },
53
+ {
54
+ "id": "sl-quotes-low-high-input",
55
+ "rule": "quotes",
56
+ "mode": "text",
57
+ "in": "Rekel je „da“ in odšel.",
58
+ "out": "Rekel je »da« in odšel.",
59
+ "note": "Slovenski pravopis 2001 §465: the low-high pair is the handwriting form; typeset text takes » «."
60
+ },
61
+ {
62
+ "id": "sl-quotes-already-typeset-nested",
63
+ "rule": "quotes",
64
+ "mode": "text",
65
+ "in": "»pesem ›Zdravljica‹ je himna«",
66
+ "out": "»pesem ›Zdravljica‹ je himna«",
67
+ "note": "Slovenski pravopis 2001 §461: an already-typeset nested pair » › ‹ « is a fixed point."
68
+ },
69
+ {
70
+ "id": "sl-quotes-already-typeset-question",
71
+ "rule": "quotes",
72
+ "mode": "text",
73
+ "in": "»Ali prideš?« je vprašal.",
74
+ "out": "»Ali prideš?« je vprašal.",
75
+ "note": "Slovenski pravopis 2001 §461: a question mark inside already-typeset » « stays flush before the close."
76
+ },
77
+ {
78
+ "id": "sl-quotes-already-typeset",
79
+ "rule": "quotes",
80
+ "mode": "text",
81
+ "in": "Rekel je »da« in odšel.",
82
+ "out": "Rekel je »da« in odšel.",
83
+ "note": "Slovenski pravopis 2001 §461: text that already carries » « is a fixed point; a primary opener of U+00BB is not read as a closer."
84
+ },
85
+ {
86
+ "id": "sl-quotes-already-typeset-comma",
87
+ "rule": "quotes",
88
+ "mode": "text",
89
+ "in": "»Dobro,« je dejal.",
90
+ "out": "»Dobro,« je dejal.",
91
+ "note": "Slovenski pravopis 2001 §461: a comma inside the quote before the close stays; already-typeset input is unchanged."
92
+ },
93
+ {
94
+ "id": "sl-quotes-no-inner-space",
95
+ "rule": "quotes",
96
+ "mode": "text",
97
+ "in": "Rekel je: \" da \" in odšel.",
98
+ "out": "Rekel je: »da« in odšel.",
99
+ "note": "Slovenski pravopis 2001 §461: no space after the opener or before the closer (innerSpace none); the stray spaces inside the straight quotes are dropped."
100
+ },
101
+ {
102
+ "id": "sl-quotes-stray-period-after",
103
+ "rule": "quotes",
104
+ "mode": "text",
105
+ "in": "Vprašal je: \"Kaj?\".",
106
+ "out": "Vprašal je: »Kaj?«.",
107
+ "note": "Slovenski pravopis 2001 §461: the closing quote sits flush before the final period."
108
+ },
109
+ {
110
+ "id": "sl-ellipsis-three-dots",
111
+ "rule": "ellipsis",
112
+ "mode": "text",
113
+ "in": "Počakaj... in potem.",
114
+ "out": "Počakaj… in potem.",
115
+ "note": "Slovenski pravopis 2001 §399 Tri pike: three dots become one U+2026."
116
+ },
117
+ {
118
+ "id": "sl-ellipsis-not-abbreviated",
119
+ "rule": "ellipsis",
120
+ "mode": "text",
121
+ "in": "Kaj...?",
122
+ "out": "Kaj…?",
123
+ "note": "Slovenski pravopis 2001 §§399–410: no two-dot form after a terminal is prescribed (abbreviatedAfterTerminal false); the ellipsis stays whole before the mark."
124
+ },
125
+ {
126
+ "id": "sl-dashes-parenthetical",
127
+ "rule": "dashes",
128
+ "mode": "text",
129
+ "in": "Rekel je - seveda - da pride.",
130
+ "out": "Rekel je – seveda – da pride.",
131
+ "note": "Slovenski pravopis 2001 §228: the dash is set with a space on both sides; navadni pomišljaj is U+2013."
132
+ },
133
+ {
134
+ "id": "sl-dashes-existing-en",
135
+ "rule": "dashes",
136
+ "mode": "text",
137
+ "in": "Sin – hči sta prišla.",
138
+ "out": "Sin – hči sta prišla.",
139
+ "note": "Slovenski pravopis 2001 §228, §378: an en dash already spaced is left alone."
140
+ },
141
+ {
142
+ "id": "sl-ranges-digits-tight",
143
+ "rule": "ranges",
144
+ "mode": "text",
145
+ "in": "vojna 1941-1945 in str. 125-132",
146
+ "out": "vojna 1941⁠–⁠1945 in str. 125⁠–⁠132",
147
+ "note": "Slovenski pravopis 2001 §394: the dash for od … do is written closed up: v letih 1941–1945, str. 125–132. ranges.md §3: the en-tight form carries U+2060 on both sides.",
148
+ "rules": {
149
+ "ranges": true
150
+ }
151
+ },
152
+ {
153
+ "id": "sl-ranges-already-tight",
154
+ "rule": "ranges",
155
+ "mode": "text",
156
+ "in": "v letih 1941–1945",
157
+ "out": "v letih 1941–1945",
158
+ "note": "Slovenski pravopis 2001 §394, ranges.md §3: an en dash between digits gets the same en-tight treatment and the result is a fixed point.",
159
+ "rules": {
160
+ "ranges": true
161
+ }
162
+ },
163
+ {
164
+ "id": "sl-ranges-word-hyphen-untouched",
165
+ "rule": "ranges",
166
+ "mode": "text",
167
+ "in": "proga Ljubljana-Trst",
168
+ "out": "proga Ljubljana-Trst",
169
+ "note": "Slovenski pravopis 2001 §394, ranges.md §2: a hyphen between words is not a range; only digit flanks qualify.",
170
+ "rules": {
171
+ "ranges": true
172
+ }
173
+ },
174
+ {
175
+ "id": "sl-hyphen-noop",
176
+ "rule": "hyphen",
177
+ "mode": "text",
178
+ "in": "slovensko-angleški slovar",
179
+ "out": "slovensko-angleški slovar",
180
+ "note": "Slovenski pravopis 2001 §608: breaking at the hyphen is provided for, so the hyphen lists are empty and the text is unchanged."
181
+ },
182
+ {
183
+ "id": "sl-nbsp-units",
184
+ "rule": "nbsp",
185
+ "mode": "text",
186
+ "in": "10 % in 5 € in 38 °C in 10 kg in 3 km in 16 ‰",
187
+ "out": "10 % in 5 € in 38 °C in 10 kg in 3 km in 16 ‰",
188
+ "note": "Slovenski pravopis 2001 §610: units follow the number without a break (5 m, 10 kg); § 259 «38 °C»; the draft lists % ‰ €. beforeUnits binds each with U+00A0."
189
+ },
190
+ {
191
+ "id": "sl-nbsp-single-letter-unit-inert",
192
+ "rule": "nbsp",
193
+ "mode": "text",
194
+ "in": "5 m in 3 a",
195
+ "out": "5 m in 3 a",
196
+ "note": "Slovenski pravopis 2001 §610 names m, but single-letter units are excluded by decision (m, a are common words or initials); nothing is bound."
197
+ },
198
+ {
199
+ "id": "sl-nbsp-abbreviation-ti",
200
+ "rule": "nbsp",
201
+ "mode": "text",
202
+ "in": "glej t. i. pojem",
203
+ "out": "glej t. i. pojem",
204
+ "note": "Slovenski pravopis 2001 §595: t. i. is written with a space; the draft states the no-break intent. abbreviations binds it with U+00A0."
205
+ },
206
+ {
207
+ "id": "sl-nbsp-section-sign",
208
+ "rule": "nbsp",
209
+ "mode": "text",
210
+ "in": "glej § 10",
211
+ "out": "glej § 10",
212
+ "note": "Slovenski pravopis 2001 §235 shows § followed by a space and the number; the binding itself is from the Pravopis 8.0 draft (secondary). afterSymbols binds them with U+00A0."
213
+ },
214
+ {
215
+ "id": "sl-nbsp-short-words-inert",
216
+ "rule": "nbsp",
217
+ "mode": "text",
218
+ "in": "v hiši in k mizi",
219
+ "out": "v hiši in k mizi",
220
+ "note": "Slovenski pravopis 2001 §612 concerns word division, not one-letter prepositions; afterShortWords is empty, so nothing is bound."
221
+ },
222
+ {
223
+ "id": "sl-spaces-brackets",
224
+ "rule": "spaces",
225
+ "mode": "text",
226
+ "in": "Rekel ( tiho ) in odšel .",
227
+ "out": "Rekel (tiho) in odšel.",
228
+ "note": "Spaces: no space inside brackets or before a closing mark (spaces.md)."
229
+ },
230
+ {
231
+ "id": "sl-symbols-copyright",
232
+ "rule": "symbols",
233
+ "mode": "text",
234
+ "in": "(c) 2026",
235
+ "out": "© 2026",
236
+ "note": "symbols.md: (c) becomes ©, independent of the locale."
237
+ },
238
+ {
239
+ "id": "sl-apostrophe-foreign-name",
240
+ "rule": "apostrophe",
241
+ "mode": "text",
242
+ "in": "O'Brien je prišel.",
243
+ "out": "O’Brien je prišel.",
244
+ "note": "apostrophe.md: a straight apostrophe inside a foreign name becomes U+2019."
245
+ }
246
+ ]
247
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "sr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "sv",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "tr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "locale": "uk",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "$comment": "Locale resolution input. Algorithm is specified in spec/rules/locale-resolution.md and is identical in every runtime — never delegate it to a platform locale-negotiation library. \"spec\" here must track spec/VERSION exactly — it is not itself the global version source; scripts/validate-spec.mjs enforces the match.",
4
4
  "locales": [
5
5
  "en-US",
@@ -26,7 +26,8 @@
26
26
  "hu",
27
27
  "bg",
28
28
  "hr",
29
- "sr"
29
+ "sr",
30
+ "sl"
30
31
  ],
31
32
  "aliases": {
32
33
  "en": "en-US",
@@ -0,0 +1,82 @@
1
+ {
2
+ "locale": "sl",
3
+ "name": "Slovenian",
4
+ "quotes": {
5
+ "primary": {
6
+ "open": "»",
7
+ "close": "«",
8
+ "innerSpace": "none"
9
+ },
10
+ "secondary": {
11
+ "open": "›",
12
+ "close": "‹",
13
+ "innerSpace": "none"
14
+ },
15
+ "elisionIdioms": [],
16
+ "elisionClitics": {
17
+ "before": [],
18
+ "after": []
19
+ }
20
+ },
21
+ "dash": {
22
+ "parenthetical": "en-spaced",
23
+ "range": "en-tight"
24
+ },
25
+ "ellipsis": {
26
+ "abbreviatedAfterTerminal": false
27
+ },
28
+ "hyphen": {
29
+ "prefixes": [],
30
+ "suffixes": [],
31
+ "compounds": []
32
+ },
33
+ "nbsp": {
34
+ "beforePunctuation": [],
35
+ "narrowBeforePunctuation": [],
36
+ "afterShortWords": [],
37
+ "abbreviations": ["t. i."],
38
+ "beforeUnits": ["%", "‰", "€", "°C", "kg", "km"],
39
+ "beforeNumber": [],
40
+ "beforeWord": [],
41
+ "afterSymbols": ["§"],
42
+ "initialBinding": "none"
43
+ },
44
+ "sources": [
45
+ {
46
+ "rule": "quotes",
47
+ "cite": "SAZU / ZRC SAZU Inštitut za slovenski jezik Frana Ramovša, Slovenski pravopis 2001, I Pravila, §461 (p. 51; forms » «, › ‹, „ “, ‚ ‘, \" \"), §463 (nested quotes), §465 «Pri pisanju z roko uporabljamo dvojni narekovaj spodaj-zgoraj.», §467 (p. 52); dictionary entry narekovaj: «ločilo ‹“ ”›, ‹» «›»",
48
+ "url": "https://fran.si/134/slovenski-pravopis/datoteke/Pravopis_Pravila.pdf",
49
+ "note": "Primary: U+00BB open, U+00AB close. DECISION: §461 lists the double middle pair first, every example in §§461–466 and §473 uses it, and §465 assigns the low-high pair „ “ to handwriting. The list is introduced with «npr.» and is not explicitly ranked. Permitted variant, not adopted: U+201C/U+201D (dictionary entry; Pravopis 8.0 draft names it as equally common in computer typesetting). The issue's lead «„…“ / „…”» was an observation, not a norm; if the low-high pair were ever pinned its close is U+201C, not U+201D. Secondary: U+203A open, U+2039 close. DECISION and CONFLICT: §461 names the single middle pair (the counterpart of the primary), §463's own example nests „…“ and ‚…‘ inside »…«, and the Pravopis 8.0 draft example uses ‘…’; the single middle pair is listed in both editions. innerSpace none for both. Q-W: primary WIDE, secondary NARROW. elisionIdioms and elisionClitics are empty: §468 (Opuščaj) gives no closed set. Confidence: MEDIUM-HIGH that »…« is the print norm of the edition in force; MEDIUM on the secondary. The PDF has no text layer and was read as page images, so code points are identified from glyph shape (MEDIUM-HIGH). Pravopis 8.0 (predlog, 2026) is a draft not in force and is cited only as a secondary check. Retrieved 2026-10-24."
50
+ },
51
+ {
52
+ "rule": "dashes",
53
+ "cite": "SAZU / ZRC SAZU Inštitut za slovenski jezik Frana Ramovša, Slovenski pravopis 2001, I Pravila, §228 (p. 30): «pomišljaj načeloma pišemo na obe strani s presledkom (je nestičen)»; §378, §381, §398 (pp. 44–45)",
54
+ "url": "https://fran.si/134/slovenski-pravopis/datoteke/Pravopis_Pravila.pdf",
55
+ "note": "dash.parenthetical = en-spaced (U+0020 U+2013 U+0020). The spaces are normative (HIGH). The width is a DECISION, MEDIUM-HIGH: §378 distinguishes the ordinary dash (navadni) from the long one (dolgi), which appears only between sentences or listed units; the ordinary one is U+2013 by glyph shape and in the Pravopis 8.0 draft. The PDF has no text layer and was read as page images, so code points are identified from glyph shape (MEDIUM-HIGH). Pravopis 8.0 (predlog, 2026) is a draft not in force and is cited only as a secondary check. Retrieved 2026-10-24."
56
+ },
57
+ {
58
+ "rule": "ranges",
59
+ "cite": "SAZU / ZRC SAZU Inštitut za slovenski jezik Frana Ramovša, Slovenski pravopis 2001, I Pravila, §228; §394 (p. 45): «namesto predlogov od … do … piše se stično na obeh straneh: proga Ljubljana–Trst, … 80–100 SIT, str. 125–132, v letih 1941–1945»; §614 (p. 68)",
60
+ "url": "https://fran.si/134/slovenski-pravopis/datoteke/Pravopis_Pravila.pdf",
61
+ "note": "dash.range = en-tight. HIGH. The draft keeps ranges tight even between full dates («1. 1. 2024–30. 6. 2024»), so unlike sr no spaced exception for multi-word range members is needed. The ranges rule is off by default. The PDF has no text layer and was read as page images, so code points are identified from glyph shape (MEDIUM-HIGH). Pravopis 8.0 (predlog, 2026) is a draft not in force and is cited only as a secondary check. Retrieved 2026-10-24."
62
+ },
63
+ {
64
+ "rule": "ellipsis",
65
+ "cite": "SAZU / ZRC SAZU Inštitut za slovenski jezik Frana Ramovša, Slovenski pravopis 2001, I Pravila, §§399–410 (pp. 46–47), Tri pike",
66
+ "url": "https://fran.si/134/slovenski-pravopis/datoteke/Pravopis_Pravila.pdf",
67
+ "note": "abbreviatedAfterTerminal = false is a DECISION, not a citation: no two-dot form after ? or ! is given. ACCEPTED COST: the edition sets the ellipsis spaced (nestično) and the draft recommends a no-break space before it; not adopted, because inserting one would break the word-internal ellipsis of §410 («prepr…!»). An author's own space stays, breakable. MEDIUM-HIGH. The PDF has no text layer and was read as page images, so code points are identified from glyph shape (MEDIUM-HIGH). Pravopis 8.0 (predlog, 2026) is a draft not in force and is cited only as a secondary check. Retrieved 2026-10-24."
68
+ },
69
+ {
70
+ "rule": "hyphen",
71
+ "cite": "SAZU / ZRC SAZU Inštitut za slovenski jezik Frana Ramovša, Slovenski pravopis 2001, I Pravila, §437 (p. 48), §471 (p. 52), §608 (p. 68): «Če besedo, ki se piše z vezajem, delimo ravno tam, kjer je v njej vezaj, ga lahko prenesemo na začetek druge vrstice»",
72
+ "url": "https://fran.si/134/slovenski-pravopis/datoteke/Pravopis_Pravila.pdf",
73
+ "note": "All three lists are empty. Breaking at a hyphen is provided for, and no closed list of unbreakable hyphenated forms exists. HIGH. The PDF has no text layer and was read as page images, so code points are identified from glyph shape (MEDIUM-HIGH). Pravopis 8.0 (predlog, 2026) is a draft not in force and is cited only as a secondary check. Retrieved 2026-10-24."
74
+ },
75
+ {
76
+ "rule": "nbsp",
77
+ "cite": "SAZU / ZRC SAZU Inštitut za slovenski jezik Frana Ramovša, Slovenski pravopis 2001, I Pravila, §610 (p. 68): «V naslednjo vrstico ne prenašamo posameznih simbolov za mere, uteži ipd. za številkami: 5 m, 10 kg.»; §250, §259 («38 °C»), §397, §595 («t. i.»), §612; dictionary entry odstotek «5 %»; Pravopis 8.0 (predlog), Nedeljivi presledek and Presledek («10 %», «16 ‰», «5 €», «10 °C», «§ 10», «t. i.»)",
78
+ "url": "https://fran.si/134/slovenski-pravopis/datoteke/Pravopis_Pravila.pdf",
79
+ "note": "(1) beforeUnits = %, ‰, €, °C, kg, km. %, °C, kg, km are in the edition in force; ‰ and € are from the draft only (SECONDARY). DECISIONS: single-letter units (m, g, V, a) are excluded although §610 names m, because they are common words or initials (as in hr, sk, bg); $ and £ are out; bare ° is never listed. (2) afterSymbols = §: draft, SECONDARY; the edition shows only the spaced form («§ 49», §235). (3) abbreviations = t. i.: the edition gives the spaced form and the draft states the no-break intent; the other spaced abbreviations (t. l., n. m., d. d., d. o. o.) are not listed, since extending the intent to them would be a derivation. DECISION, MEDIUM. (4) afterShortWords is empty: §612 concerns word division, not one-letter prepositions; nothing is imported from cs or sk. (5) beforePunctuation and narrowBeforePunctuation are empty: §228 puts punctuation closed up. (6) beforeNumber, beforeWord are empty and initialBinding = none: only the spaced form of « dr. F. Prešeren » is shown. Decisions, not citations. The PDF has no text layer and was read as page images, so code points are identified from glyph shape (MEDIUM-HIGH). Pravopis 8.0 (predlog, 2026) is a draft not in force and is cited only as a secondary check. Retrieved 2026-10-24."
80
+ }
81
+ ]
82
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.14.0",
2
+ "spec": "1.15.0",
3
3
  "$comment": "Single source of truth for pipeline order. Rules run in ascending `order`. Disabling a rule removes it from the sequence and never reorders the rest. Rule ids are public API (see docs/ARCHITECTURE.md section 5). \"spec\" here must track spec/VERSION exactly — it is not itself the global version source; scripts/validate-spec.mjs enforces the match.",
4
4
  "rules": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polytypo
4
- VERSION = "1.14.0"
4
+ VERSION = "1.15.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polytypo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.0
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iurii Rogulia
@@ -62,6 +62,7 @@ files:
62
62
  - lib/polytypo/data/fixtures/ro.json
63
63
  - lib/polytypo/data/fixtures/ru.json
64
64
  - lib/polytypo/data/fixtures/sk.json
65
+ - lib/polytypo/data/fixtures/sl.json
65
66
  - lib/polytypo/data/fixtures/sr.json
66
67
  - lib/polytypo/data/fixtures/sv.json
67
68
  - lib/polytypo/data/fixtures/tr.json
@@ -88,6 +89,7 @@ files:
88
89
  - lib/polytypo/data/locales/ro.json
89
90
  - lib/polytypo/data/locales/ru.json
90
91
  - lib/polytypo/data/locales/sk.json
92
+ - lib/polytypo/data/locales/sl.json
91
93
  - lib/polytypo/data/locales/sr.json
92
94
  - lib/polytypo/data/locales/sv.json
93
95
  - lib/polytypo/data/locales/tr.json