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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e84bade0cfecbed7a333cf29ef6bb7ea793a349805cfbd7b8f1f18f7d5ccd721
4
- data.tar.gz: 9ba16ce6e90eb2f47c3f7478ef541bad6287c48fa6b968d54e7b9f59102c15bc
3
+ metadata.gz: 8c8aba5b27eb6b2b852217b3c4ba1652d78fee2fd291ce2a14e8cfc36da9ea5f
4
+ data.tar.gz: 321cf32a34decf2b526b6ae4231df91cf8a7d07c96b55a211b25582e701c9abe
5
5
  SHA512:
6
- metadata.gz: ea98e7ac865b6d023a77381c07592961be171b73a9349062b7e4b83758d89447062932642d45d0e337408d4f5888c8e231fda775e5ecee81cc83e7f10c8ef144
7
- data.tar.gz: '0298aaf8bca95858b5735f407031b86c1a893bb6ca2d3275061b4ef48aaf5367ecad2359565fa937bf05be5a0352c2e77e7a77dae2a8f84ff5d89dabc1ac05e3'
6
+ metadata.gz: d4ba1cd320aeaca4076180463c47d0d802fa3c0c9672a34326bbef2cd39ce6308b1209454792eccc2a534aec8476c840413b9f4cdddbd8cf248ef0f7205c1f0f
7
+ data.tar.gz: f5dd45b49cec16dcfdca6994646d6083242cfc8cb1357ec687786bfb73f24390af6b940fe49570ab0183d6507c79c4bb29581c5fdd40caa208a4bc2d3666845d
@@ -1 +1 @@
1
- 1.10.0
1
+ 1.12.0
@@ -0,0 +1,253 @@
1
+ {
2
+ "spec": "1.12.0",
3
+ "locale": "bg",
4
+ "cases": [
5
+ {
6
+ "id": "bg-quotes-primary",
7
+ "rule": "quotes",
8
+ "mode": "text",
9
+ "in": "Той каза: \"не\" и си тръгна.",
10
+ "out": "Той каза: „не“ и си тръгна.",
11
+ "note": "ИБЕ, s.v. «кавички»: the base form is „…“ (U+201E, U+201C); the close is U+201C, not U+201D."
12
+ },
13
+ {
14
+ "id": "bg-quotes-nested-same-pair",
15
+ "rule": "quotes",
16
+ "mode": "text",
17
+ "in": "Той каза: \"стихотворението \"Кафене Славия\" е хубаво\" и спря.",
18
+ "out": "Той каза: „стихотворението „Кафене Славия“ е хубаво“ и спря.",
19
+ "note": "ОПР т. 135.1.5, via ИБЕ: a quote inside a quote takes the same „ “ pair, so the inner level is not a different glyph."
20
+ },
21
+ {
22
+ "id": "bg-quotes-nested-single-straight",
23
+ "rule": "quotes",
24
+ "mode": "text",
25
+ "in": "Той каза: \"стихотворението 'Кафене' е хубаво\".",
26
+ "out": "Той каза: „стихотворението „Кафене“ е хубаво“.",
27
+ "note": "A straight single mark inside a double quote becomes the secondary pair, which in bg equals the primary pair."
28
+ },
29
+ {
30
+ "id": "bg-quotes-already-typeset-kept",
31
+ "rule": "quotes",
32
+ "mode": "text",
33
+ "in": "Той каза: „стихотворението „Кафене Славия“ е хубаво“ и спря.",
34
+ "out": "Той каза: „стихотворението „Кафене Славия“ е хубаво“ и спря.",
35
+ "note": "Already typeset at both levels: left as it is."
36
+ },
37
+ {
38
+ "id": "bg-quotes-nest-at-end-declined",
39
+ "rule": "quotes",
40
+ "mode": "text",
41
+ "in": "Той каза: \"това е 'Славия'\".",
42
+ "out": "Той каза: \"това е ’Славия'\".",
43
+ "note": "Accepted miss: secondary equals primary, so a nest whose inner mark touches the outer one is declined by the quotes rule (quotes.md §3.2 V1, §3.5), and apostrophe then turns the inner opening mark into U+2019. Pinned as measured; the cost of the identical pair."
44
+ },
45
+ {
46
+ "id": "bg-quotes-nest-at-end-double-declined",
47
+ "rule": "quotes",
48
+ "mode": "text",
49
+ "in": "\"Кафене \"Славия\"\"",
50
+ "out": "\"Кафене \"Славия\"\"",
51
+ "note": "Accepted miss: the ОПР т. 135.1.5 shape typed with straight marks stays entirely straight; the identical pair would put two like glyphs side by side."
52
+ },
53
+ {
54
+ "id": "bg-quotes-nest-at-start-declined",
55
+ "rule": "quotes",
56
+ "mode": "text",
57
+ "in": "\"'b' a\"",
58
+ "out": "\"'b’ a\"",
59
+ "note": "Accepted miss: the inner mark at the start of the outer quote; the decline leaves a half-typeset result."
60
+ },
61
+ {
62
+ "id": "bg-quotes-decline-spreads",
63
+ "rule": "quotes",
64
+ "mode": "text",
65
+ "in": "\"x\" и \"a 'b'\"",
66
+ "out": "\"x\" и \"a ’b'\"",
67
+ "note": "Accepted miss: the decline is not local, the plain pair before the failing nest also stays straight."
68
+ },
69
+ {
70
+ "id": "bg-quotes-no-inner-space",
71
+ "rule": "quotes",
72
+ "mode": "text",
73
+ "in": "„ не “",
74
+ "out": "„не“",
75
+ "note": "ИБЕ spacing article: no space inside the marks."
76
+ },
77
+ {
78
+ "id": "bg-ellipsis-three-dots",
79
+ "rule": "ellipsis",
80
+ "mode": "text",
81
+ "in": "Чакай... какво?",
82
+ "out": "Чакай… какво?",
83
+ "note": "ИБЕ №2158: three dots, not four; the mark attaches to the preceding word."
84
+ },
85
+ {
86
+ "id": "bg-ellipsis-not-abbreviated",
87
+ "rule": "ellipsis",
88
+ "mode": "text",
89
+ "in": "Наистина?.. да",
90
+ "out": "Наистина?… да",
91
+ "note": "abbreviatedAfterTerminal is false: `?..` is a typing slip, not an abbreviated ellipsis (decision, no source)."
92
+ },
93
+ {
94
+ "id": "bg-dashes-parenthetical",
95
+ "rule": "dashes",
96
+ "mode": "text",
97
+ "in": "Утре - ако вали - няма да дойда.",
98
+ "out": "Утре – ако вали – няма да дойда.",
99
+ "note": "ИБЕ №572: a space before and after the long dash; U+2013 by decision."
100
+ },
101
+ {
102
+ "id": "bg-dashes-existing-em-dash",
103
+ "rule": "dashes",
104
+ "mode": "text",
105
+ "in": "Утре — ако вали — няма да дойда.",
106
+ "out": "Утре – ако вали – няма да дойда.",
107
+ "note": "An authored em dash becomes the locale's en dash (the DGT handbook's U+2014 is house style)."
108
+ },
109
+ {
110
+ "id": "bg-ranges-years-hyphen",
111
+ "rule": "ranges",
112
+ "mode": "text",
113
+ "in": "през 2000-2010 г. и I-II в.",
114
+ "out": "през 2000 – 2010 г. и I-II в.",
115
+ "note": "ranges.md §3: ОПР т. 103.4 prints «2000 – 2010 г.» with spaces; the Roman-numeral member is declined, so `I-II` stays.",
116
+ "rules": {
117
+ "ranges": true
118
+ }
119
+ },
120
+ {
121
+ "id": "bg-ranges-en-dash-gets-spaces",
122
+ "rule": "ranges",
123
+ "mode": "text",
124
+ "in": "2000–2010 г.",
125
+ "out": "2000 – 2010 г.",
126
+ "note": "ranges.md §3: a tight en dash is the pre-2012 form and takes the spaced form.",
127
+ "rules": {
128
+ "ranges": true
129
+ }
130
+ },
131
+ {
132
+ "id": "bg-ranges-spaced-kept",
133
+ "rule": "ranges",
134
+ "mode": "text",
135
+ "in": "2000 – 2010 г.",
136
+ "out": "2000 – 2010 г.",
137
+ "note": "ranges.md §3: the spaced en dash is already the correct form.",
138
+ "rules": {
139
+ "ranges": true
140
+ }
141
+ },
142
+ {
143
+ "id": "bg-ranges-dates",
144
+ "rule": "ranges",
145
+ "mode": "text",
146
+ "in": "13.10. - 20.11.2018 г.",
147
+ "out": "13.10. – 20.11.2018 г.",
148
+ "note": "ranges.md §3: ОПР т. 109.4 prints «13.10. – 20.11.2018 г.».",
149
+ "rules": {
150
+ "ranges": true
151
+ }
152
+ },
153
+ {
154
+ "id": "bg-ranges-word-hyphen-untouched",
155
+ "rule": "ranges",
156
+ "mode": "text",
157
+ "in": "Българо-руски речник",
158
+ "out": "Българо-руски речник",
159
+ "note": "ranges.md §3: a hyphenated word is not a digit range and is left alone.",
160
+ "rules": {
161
+ "ranges": true
162
+ }
163
+ },
164
+ {
165
+ "id": "bg-hyphen-noop",
166
+ "rule": "hyphen",
167
+ "mode": "text",
168
+ "in": "северо-западен и по-добър",
169
+ "out": "северо-западен и по-добър",
170
+ "note": "ОПР т. 65–66 govern syllable breaks only; no list ships, nothing changes."
171
+ },
172
+ {
173
+ "id": "bg-nbsp-units",
174
+ "rule": "nbsp",
175
+ "mode": "text",
176
+ "in": "100 км, 5 кг и 20 лв.",
177
+ "out": "100 км, 5 кг и 20 лв.",
178
+ "note": "ИБЕ №1601: a space separates the unit or abbreviation from its number."
179
+ },
180
+ {
181
+ "id": "bg-nbsp-year-abbreviation",
182
+ "rule": "nbsp",
183
+ "mode": "text",
184
+ "in": "през 2020 г. беше",
185
+ "out": "през 2020 г. беше",
186
+ "note": "ИБЕ №1601: «2020 г.» with a space."
187
+ },
188
+ {
189
+ "id": "bg-nbsp-percent-inert",
190
+ "rule": "nbsp",
191
+ "mode": "text",
192
+ "in": "5% и 5 %",
193
+ "out": "5% и 5 %",
194
+ "note": "ИБЕ №626 writes 5% without a space, so % is not a unit here and nothing is bound."
195
+ },
196
+ {
197
+ "id": "bg-nbsp-single-letter-unit-inert",
198
+ "rule": "nbsp",
199
+ "mode": "text",
200
+ "in": "10 м и 5 с",
201
+ "out": "10 м и 5 с",
202
+ "note": "Single-letter symbols are excluded by decision, not by citation (ИБЕ №1601 writes «10 м» with a space): `с` is a Bulgarian preposition."
203
+ },
204
+ {
205
+ "id": "bg-nbsp-short-words-inert",
206
+ "rule": "nbsp",
207
+ "mode": "text",
208
+ "in": "в къщата и с приятел",
209
+ "out": "в къщата и с приятел",
210
+ "note": "afterShortWords ships empty: no source gives a rule for в, с, к, и."
211
+ },
212
+ {
213
+ "id": "bg-nbsp-initials-unbound",
214
+ "rule": "nbsp",
215
+ "mode": "text",
216
+ "in": "Иван Вазов и И. Вазов",
217
+ "out": "Иван Вазов и И. Вазов",
218
+ "note": "initialBinding is none: no source states a rule on initials."
219
+ },
220
+ {
221
+ "id": "bg-nbsp-no-space-before-question",
222
+ "rule": "nbsp",
223
+ "mode": "text",
224
+ "in": "Наистина ? Да !",
225
+ "out": "Наистина? Да!",
226
+ "note": "ИБЕ spacing article: no space before ? and !, so nothing is put back."
227
+ },
228
+ {
229
+ "id": "bg-spaces-brackets",
230
+ "rule": "spaces",
231
+ "mode": "text",
232
+ "in": "Текст ( нормален ) остава .",
233
+ "out": "Текст (нормален) остава.",
234
+ "note": "spaces.md: brackets tighten, no space before the final stop."
235
+ },
236
+ {
237
+ "id": "bg-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": "bg-apostrophe-foreign-name",
246
+ "rule": "apostrophe",
247
+ "mode": "text",
248
+ "in": "Това е McDonald's",
249
+ "out": "Това е McDonald’s",
250
+ "note": "apostrophe rule, locale-neutral."
251
+ }
252
+ ]
253
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "cs",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "de-CH",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "de-DE",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "el",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.10.0",
2
+ "spec": "1.12.0",
3
3
  "locale": "en-GB",
4
4
  "cases": [
5
5
  {