polytypo 1.5.0 → 1.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ff5ce01ef6e41610e4b170c65bec8d01fda6ec6bb9ade51270a99533f289454
4
- data.tar.gz: 0b8c207111b01b21546d93a49fc0393b3cf040642073d2a95063c06de8cbff2a
3
+ metadata.gz: d51bb2ff87f0296fb0e541eb321c03045e3ea6ccee4ff983cccbfa39469d5714
4
+ data.tar.gz: 77cdd431d046c4e3708053a651712363e5bef21c2f9c245fd203f74c7f68917a
5
5
  SHA512:
6
- metadata.gz: 78259af3e3d2db20353b7f8aa2a8adab72473ac18a3a54a442fb2f5670928a8ccb954c144852ebaf6ec6466efd2b21c71aefe6a5cd97570e293082fa051b63cd
7
- data.tar.gz: 6425e0eabb69b66ea85953c5edd6ef57112f8054ec9c6224bfd7618a7b5a4eace5e421115646b3a841abde0ae56ac1a95295be0c483a6fad91a45f1c80bbc3c9
6
+ metadata.gz: 5ff10230c85bb817a99c225d36fc3525b3690017fb157c78ef208a8a5a9f94df0bfa220c633a9f02a72c8dd5b393eac1768cdc65b57ce0cfbb8524d0cd23b512
7
+ data.tar.gz: a1ddd083a482adf73af4009b3df9dea11809f21163bb95503bcc7abec611cdaa5ef1dfad40189295e28b1ee3280efe4a40b6d620a2a002c439128bd99051cac1
@@ -1 +1 @@
1
- 1.5.0
1
+ 1.6.0
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "cs",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "de-CH",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "de-DE",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "el",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "en-GB",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "en-US",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "es",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "fi",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "fr-CA",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "fr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "it",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "cases": [
4
4
  {
5
5
  "id": "exact-en-us",
@@ -276,6 +276,18 @@
276
276
  "tag": "pt-AO",
277
277
  "resolves": "pt-PT",
278
278
  "note": "section 3.4 step 3b: the strip lands on an alias key, so the alias is followed — the one path through step 3 that steps 1 and 2 cannot reach."
279
+ },
280
+ {
281
+ "id": "exact-tr",
282
+ "tag": "tr",
283
+ "resolves": "tr",
284
+ "note": "section 3.4 step 1. Added with the locale in spec 1.6.0, for the reason exact-es records: a registry member with no resolution case is a member nothing proves resolves rather than throws."
285
+ },
286
+ {
287
+ "id": "strip-tr-tr",
288
+ "tag": "tr-TR",
289
+ "resolves": "tr",
290
+ "note": "section 3.4 step 3a, and the tag a Turkish caller actually sends. tr needs no registry alias precisely because the region strip reaches it — this case is what makes that claim testable rather than asserted."
279
291
  }
280
292
  ]
281
293
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "nl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "pl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "pt-BR",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "pt-PT",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "ru",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "sv",
4
4
  "cases": [
5
5
  {
@@ -0,0 +1,250 @@
1
+ {
2
+ "spec": "1.6.0",
3
+ "locale": "tr",
4
+ "cases": [
5
+ {
6
+ "id": "tr-quotes-primary-and-nested",
7
+ "rule": "quotes",
8
+ "mode": "text",
9
+ "in": "Sordu: \"Bu, 'köşedeki' dedikleri dükkân mı?\"",
10
+ "out": "Sordu: “Bu, ‘köşedeki’ dedikleri dükkân mı?”",
11
+ "note": "Birinci derece U+201C/U+201D, ikinci derece U+2018/U+2019 — TDK «Tek Tırnak İşareti» kuralının iki derecesi tek bir cümlede. Kod noktaları Türk Dili dergisinin metin katmanından okundu, kural ise TDK Yazım Kuralları sayfasından; ikisi de tr.json içindeki sources alanında."
12
+ },
13
+ {
14
+ "id": "tr-quotes-tdk-nested-example",
15
+ "rule": "quotes",
16
+ "mode": "text",
17
+ "in": "\"Atatürk henüz 'Gazi Mustafa Kemal Paşa' idi.\"",
18
+ "out": "“Atatürk henüz ‘Gazi Mustafa Kemal Paşa’ idi.”",
19
+ "note": "TDK Yazım Kılavuzu'nun tek tırnak kuralı için verdiği örneğin kendisi (Falih Rıfkı Atay), düz işaretlerle yazılıp motora verildi. Çıktı, kaynağın bastığı iç içe biçimle aynıdır."
20
+ },
21
+ {
22
+ "id": "tr-quotes-not-guillemets",
23
+ "rule": "quotes",
24
+ "mode": "text",
25
+ "in": "«Tanrı, Musa'ya söz söylemiştir.»",
26
+ "out": "“Tanrı, Musa’ya söz söylemiştir.”",
27
+ "note": "Issue #51'de bildirilen «…» biçimi Türkçenin normu DEĞİLDİR: Türk Dili, «Tırnak İşareti Üzerine», s. 32 onu «bazı yazarlar»ın tercihi olarak tanıtır. quotes.md §0 mandate 1 uyarınca var olan her tırnak yeniden dizilebilir, bu yüzden yan tırnak TDK'nin üstten çift tırnağına çevrilir. Bu satır, hangi biçimin kazandığını sabitler."
28
+ },
29
+ {
30
+ "id": "tr-quotes-already-correct",
31
+ "rule": "quotes",
32
+ "mode": "text",
33
+ "in": "“Kendi Gök Kubbemiz” adı altında çıktı.",
34
+ "out": "“Kendi Gök Kubbemiz” adı altında çıktı.",
35
+ "note": "Doğru dizilmiş metin sabit noktadır: locale'in kendi çifti yeniden yazılmaz."
36
+ },
37
+ {
38
+ "id": "tr-apostrophe-suffix-after-abbreviation-and-numeral",
39
+ "rule": "apostrophe",
40
+ "mode": "text",
41
+ "in": "TBMM'nin kararı 1985'te açıklandı.",
42
+ "out": "TBMM’nin kararı 1985’te açıklandı.",
43
+ "note": "TDK «Kesme İşareti» 3 ve 4: kısaltmalara ve sayılara getirilen ekler kesme işaretiyle ayrılır. Her iki işaretin de iki yanı ALNUM olduğundan apostrophe.md §3.3 case 2 çalışır — bu satır locale verisi okumaz, yapısal olarak doğrudur, ve Türkçenin en sık biçimini sabitler."
44
+ },
45
+ {
46
+ "id": "tr-apostrophe-suffix-after-proper-noun",
47
+ "rule": "apostrophe",
48
+ "mode": "text",
49
+ "in": "Türkiye'nin ve Atatürk'ün",
50
+ "out": "Türkiye’nin ve Atatürk’ün",
51
+ "note": "Aynı kural, özel adlarda. «Atatürk'ün» parçası «ün» ile başlar; apostrophe kuralı hiçbir locale verisi okumadığı için bu, harf katlamasından bağımsız olarak çalışır."
52
+ },
53
+ {
54
+ "id": "tr-apostrophe-suffix-across-span-boundary",
55
+ "rule": "apostrophe",
56
+ "mode": "html",
57
+ "in": "<b>TBMM</b>'nin kararı",
58
+ "out": "<b>TBMM</b>’nin kararı",
59
+ "note": "Ek, satır içi bir span sınırına dayandığında: modes.md §3.2'nin işaretçisi apostrophe.md §3.1'in OPENISH kümesindedir, dolayısıyla işaret case 4'e düşer ve aynı U+2019'u verir. Burada eşleşecek ikinci bir tırnak olmadığı için quotes zaten bir şey yapamaz; çevreleyen bir alıntının olduğu biçim ayrı bir satırda sabitlenmiştir."
60
+ },
61
+ {
62
+ "id": "tr-ellipsis-abbreviated-after-question",
63
+ "rule": "ellipsis",
64
+ "mode": "text",
65
+ "in": "Nasıl da akşam oldu?...",
66
+ "out": "Nasıl da akşam oldu?..",
67
+ "note": "ellipsis.abbreviatedAfterTerminal = true. TDK «Üç Nokta» UYARI'sı soru ve ünlem işaretinden sonra iki noktayı yeterli sayar ve bütün örnekleri iki noktalıdır; §3 adım 4→6 üç noktayı o biçime normalleştirir. Değerin neden true olduğu ölçümle gerekçelendirilmiştir: false olsaydı «?..» girdisi «?…» olurdu, yani Kılavuz'un bastığı biçim bozulurdu."
68
+ },
69
+ {
70
+ "id": "tr-ellipsis-abbreviated-is-a-fixed-point",
71
+ "rule": "ellipsis",
72
+ "mode": "text",
73
+ "in": "Gök ekini biçer gibi!.. Başaklar daha dolmadan.",
74
+ "out": "Gök ekini biçer gibi!.. Başaklar daha dolmadan.",
75
+ "note": "TDK'nin kendi örneği (Tarık Buğra), olduğu gibi. Doğru biçim yeniden işlemeye dayanır — abbreviatedAfterTerminal = true olan bir locale'de iki nokta çıktının kendisidir, girdi hatası değil."
76
+ },
77
+ {
78
+ "id": "tr-ellipsis-plain-run",
79
+ "rule": "ellipsis",
80
+ "mode": "text",
81
+ "in": "Bekledik ... ve gitti.",
82
+ "out": "Bekledik … ve gitti.",
83
+ "note": "Terminal işaret olmadan üç nokta tek U+2026 olur; abbreviatedAfterTerminal yalnızca soru ve ünlemden SONRA devreye girer (§3 adım 6'nın TERMINAL testi)."
84
+ },
85
+ {
86
+ "id": "tr-dashes-parenthetical-none-is-a-total-noop",
87
+ "rule": "dashes",
88
+ "mode": "text",
89
+ "in": "Küçük bir sürü -dört inekle birkaç koyun- köye girdi.",
90
+ "out": "Küçük bir sürü -dört inekle birkaç koyun- köye girdi.",
91
+ "note": "dash.parenthetical = «none»: TDK ara sözü KISA ÇİZGİ ile ve bitişik yazar, locale.schema.json'ın enum'u ise yalnızca em/en uzunluklarını tanır, dolayısıyla bu gelenek ifade edilemez ve kural sessiz bırakılmıştır. Örnek TDK'nin kendisinindir ve olduğu gibi kalır. tr, dashes kuralının kanıtlanabilir biçimde total no-op olduğu üçüncü locale'dir, el ve es'ten sonra (dashes.md §6)."
92
+ },
93
+ {
94
+ "id": "tr-dashes-existing-em-dash-untouched",
95
+ "rule": "dashes",
96
+ "mode": "text",
97
+ "in": "Plan — eğer varsa — başarısız.",
98
+ "out": "Plan — eğer varsa — başarısız.",
99
+ "note": "Aynı «none» değeri, var olan bir tam kare çizgiye de dokunmaz: kuralın hiçbir emisyonu yoktur, bu yüzden yeniden dizme de yapmaz. Bu satır, «none»'ın «kısa çizgiye çevir» anlamına GELMEDİĞİNİ sabitler."
100
+ },
101
+ {
102
+ "id": "tr-ranges-none-even-when-the-rule-is-enabled",
103
+ "rule": "ranges",
104
+ "mode": "text",
105
+ "rules": {
106
+ "ranges": true
107
+ },
108
+ "in": "1914-1918 Birinci Dünya Savaşı",
109
+ "out": "1914-1918 Birinci Dünya Savaşı",
110
+ "note": "ranges.md §2: dash.range = «none» olduğunda kural hiçbir şey yayamaz. Girdi TDK «Kısa Çizgi» 7'nin kendi örneğidir — aralık normludur ama işaret kısa çizgidir, yani doğrulanmış bir en/em geleneği yoktur. Kural varsayılan olarak kapalı olduğundan bu satır onu açıkça açar; açıkken de çıktı değişmez, ki asıl sabitlenen budur."
111
+ },
112
+ {
113
+ "id": "tr-nbsp-before-units",
114
+ "rule": "nbsp",
115
+ "mode": "text",
116
+ "in": "15 °C, 20 kg ve 5 cm² ölçüldü.",
117
+ "out": "15 °C, 20 kg ve 5 cm² ölçüldü.",
118
+ "note": "N5, TDK SSS'nin «15 °C» ve «20 kg» örnekleriyle. «cm²» girişinin «cm» ile birlikte listelenmesi güvenlidir: aynı konumda en uzun eşleşme kazanır (nbsp.md §3.7)."
119
+ },
120
+ {
121
+ "id": "tr-nbsp-ton-and-mm",
122
+ "rule": "nbsp",
123
+ "mode": "text",
124
+ "in": "350 ton yük ve 12 mm kalınlık.",
125
+ "out": "350 ton yük ve 12 mm kalınlık.",
126
+ "note": "«ton» uluslararası bir simge değil bir kelimedir ve yalnızca TDK SSS'nin düzyazı örneğinden gelir; listede tutulmasının nedeni sağ sınır testinin onu «tonluk» içinde eşleştirmemesidir. Kaynak rütbesi tr.json'da açıkça yazılıdır."
127
+ },
128
+ {
129
+ "id": "tr-nbsp-percent-is-not-bound",
130
+ "rule": "nbsp",
131
+ "mode": "text",
132
+ "in": "%25 ve ‰50 oranları.",
133
+ "out": "%25 ve ‰50 oranları.",
134
+ "note": "TDK «Sayıların Yazılışı»: yüzde ve binde işaretleri sayıdan ÖNCE ve bitişik yazılır. beforeUnits ve afterSymbols'in ikisi de bu işaret için boştur ve N5/N6 yalnızca var olan bir boşluğu dönüştürür, asla eklemez — bu yüzden biçim olduğu gibi kalır. pl.json'un «%» girişinin tersi, bilerek."
135
+ },
136
+ {
137
+ "id": "tr-nbsp-abbreviation-internal-space",
138
+ "rule": "nbsp",
139
+ "mode": "text",
140
+ "in": "Kur. Bşk. ve Nö. Sb. geldi.",
141
+ "out": "Kur. Bşk. ve Nö. Sb. geldi.",
142
+ "note": "N4, TDK Kısaltmalar Dizini'nden harfi harfine alınan iki giriş. Ölçüt: her iki parçası da noktalı kısaltma olan girişler; akronim içeren biçimler dışarıda bırakıldı."
143
+ },
144
+ {
145
+ "id": "tr-nbsp-short-word-inert",
146
+ "rule": "nbsp",
147
+ "mode": "text",
148
+ "in": "ve bir de o geldi",
149
+ "out": "ve bir de o geldi",
150
+ "note": "afterShortWords boş, ve bu satır onu kanıtlanabilir yapar: Türkçede tek harfli bağlaç veya edat yoktur ve TDK asılı kalan kısa sözcükler için bir kural vermez. ru ve pl'nin listeleri buraya taşınmamıştır."
151
+ },
152
+ {
153
+ "id": "tr-hyphen-noop",
154
+ "rule": "hyphen",
155
+ "mode": "text",
156
+ "in": "Ural-Altay dil grubu ve Türk-Alman ilişkileri",
157
+ "out": "Ural-Altay dil grubu ve Türk-Alman ilişkileri",
158
+ "note": "Üç liste de boş: TDK satır sonunda bölmeyi normlar, yasaklamaz, dolayısıyla hiçbir biçim U+2011 talep etmez. Girdi TDK «Kısa Çizgi» 7'nin kendi örneğidir ve kural onun için kanıtlanabilir bir no-op'tur (hyphen.md §2)."
159
+ },
160
+ {
161
+ "id": "tr-symbols-and-spaces",
162
+ "rule": "symbols",
163
+ "mode": "text",
164
+ "in": "Copyright (c) 2026, baskı 40x60 cm.",
165
+ "out": "Copyright © 2026, baskı 40×60 cm.",
166
+ "note": "Locale'den bağımsız kurallar Türkçe metinde de çalışır: (c) → U+00A9, x → U+00D7, ve «60 cm» beforeUnits üzerinden bağlanır."
167
+ },
168
+ {
169
+ "id": "tr-spaces-punctuation-is-closed-up",
170
+ "rule": "spaces",
171
+ "mode": "text",
172
+ "in": "Nasıl gidiyorsun ? İyiyim , sağ ol .",
173
+ "out": "Nasıl gidiyorsun? İyiyim, sağ ol.",
174
+ "note": "TDK «Noktalama İşaretleri (Açıklamalar)» giriş hükmü: işaretler ait oldukları kelimelere bitişik yazılır ve boşluk işaretten SONRA gelir. spaces kuralı bunu tam olarak uygular — işaretten önceki boşluk silinir, ikili boşluk teke iner — ve nbsp.beforePunctuation'ın bu locale'de boş olmasının nedeni de aynı hükümdür: Fransızca «mot !» geleneği Türkçede yoktur, dolayısıyla silinen boşluğun geri konması istenmez."
175
+ },
176
+ {
177
+ "id": "tr-html-span-boundary-suffix-declined",
178
+ "rule": "quotes",
179
+ "mode": "html",
180
+ "in": "Dedi: '<b>TBMM</b>'nin kararı doğru.' Bitti.",
181
+ "out": "Dedi: “<b>TBMM</b>’nin kararı doğru.” Bitti.",
182
+ "note": "quotes.md §3.2'nin span-boundary elizyon vetosu (spec 1.4.0), Türkçe için canlı: ek kesme işaretiyle bir satır içi span sınırına dayanır, modes.md §3.2'nin işaretçisi «M» harfinin yerini tutar ve medial-elizyon vetosu çalışamaz. quotes.elisionClitics.after'daki «nin» girişi işareti reddeder, apostrophe (order 50) onu case 4 ile U+2019 yapar, ve yazarın kendi çifti birincil glifleri korur. Liste boş olsaydı — spec 1.6.0'dan önce her locale için olduğu gibi — ek alıntıyı açar, açılış işareti düz U+0027 kalır ve kapanış işareti kapanış glifi olurdu; ölçülmüştür (canonical issue #53). Türkçede bu biçim nadir değil, dilbilgisel olarak zorunludur."
183
+ },
184
+ {
185
+ "id": "tr-markdown-commonmark-span-boundary-suffix-declined",
186
+ "rule": "quotes",
187
+ "mode": "markdown",
188
+ "dialect": "commonmark",
189
+ "in": "Dedi: '**Ankara**'da olacak.' Bitti.\n",
190
+ "out": "Dedi: “**Ankara**’da olacak.” Bitti.\n",
191
+ "note": "Aynı mekanizma markdown'da ve «da» girişiyle: veto işaretçiyi okur, onu üreten span türünü değil. Yer adlarına gelen bulunma eki, Türkçe metinde en sık rastlanan biçimlerden biridir."
192
+ },
193
+ {
194
+ "id": "tr-html-span-boundary-listed-fragment-quoted",
195
+ "rule": "quotes",
196
+ "mode": "html",
197
+ "in": "Ek <em>'de'</em> biçiminde yazılır.",
198
+ "out": "Ek <em>’de’</em> biçiminde yazılır.",
199
+ "note": "Kabul edilen yanlış pozitif, birinin metninde bırakılmak yerine suite'e yazılmıştır: içeriği TAMAMEN listelenmiş bir parça olan ve satır içi bir span sınırına dayanan bir alıntı, ek sanılır. Bu, spec 1.4.0'ın İngilizce «s» için kabul ettiği bedelin aynısıdır ve Türkçede riski daha yüksektir, çünkü «de» ayrıca ayrı yazılan bir bağlaçtır. İki hafifletici tr.json'da kayıtlıdır: TDK'nin kendi anma biçimi başta kısa çizgi taşır ve kısa çizgi LETTER olmadığı için veto çalışamaz, ayrıca TDK bağlacı tırnaksız yazar."
200
+ },
201
+ {
202
+ "id": "tr-html-span-boundary-uppercase-suffix-not-matched",
203
+ "rule": "quotes",
204
+ "mode": "html",
205
+ "in": "Dedi: '<b>TBMM</b>'NİN kararı.' Bitti.",
206
+ "out": "Dedi: '<b>TBMM</b>“NİN kararı.” Bitti.",
207
+ "note": "Kapsam sınırı, adıyla sabitlenmiştir: büyük harfli ek eşleşmez, çünkü katlama yalnızca ilk kod noktasını ve yalnızca ASCII A-Z'yi kapsar — «N»→«n» katlanır ama kuyrukta U+0130 «İ» ile U+0069 «i» ayrı kod noktalarıdır. Katlamayı genişletmek ARCHITECTURE.md §4.4'ün noktasız ı (U+0131) yüzünden açıkça yasakladığı yerdir, dolayısıyla bu kayıp giderilmez, kabul edilir ve görünür tutulur."
208
+ },
209
+ {
210
+ "id": "tr-html-span-boundary-unlisted-suffix-not-matched",
211
+ "rule": "quotes",
212
+ "mode": "html",
213
+ "in": "Dedi: '<b>Irak</b>'ta olacak.' Bitti.",
214
+ "out": "Dedi: '<b>Irak</b>“ta olacak.” Bitti.",
215
+ "note": "İkinci kapsam sınırı: «ta» parçası, TDK'nin okunan sayfalarında kesme işaretinden sonraki dizinin TAMAMI olarak basılmadığı için listeye girmemiştir — ölçüt paradigma değil, basılı örnektir (tr.json). Liste yalnızca reddeder, dolayısıyla eksik bir giriş yanlış bir giriş değildir; bu satır hangi biçimlerin henüz onarılmadığını görünür kılar."
216
+ },
217
+ {
218
+ "id": "tr-html-span-boundary-quotation-outside-the-span",
219
+ "rule": "quotes",
220
+ "mode": "html",
221
+ "in": "Bağlaç olan '<em>de</em>' ayrı yazılır.",
222
+ "out": "Bağlaç olan “<em>de</em>” ayrı yazılır.",
223
+ "note": "Yanlış pozitifin negatif kontrolü, ve maliyetin NE KADAR DAR olduğunu gösterir. Alıntı işaretleri span'in DIŞINDA olduğunda hiçbir işaret span sınırına dayanmaz, veto hiç çalışmaz ve cümle doğru dizilir. Terimi vurgulayıp alıntılamanın olağan yazılışı budur; veto ancak yazar işaretleri span'in İÇİNE koyduğunda yanılır."
224
+ },
225
+ {
226
+ "id": "tr-html-span-boundary-tdk-hyphen-citation-form",
227
+ "rule": "quotes",
228
+ "mode": "html",
229
+ "in": "<em>'-de'</em> eki bitişik yazılır.",
230
+ "out": "<em>“-de”</em> eki bitişik yazılır.",
231
+ "note": "TDK'nin ekleri anma biçiminin kendisi, baştaki kısa çizgiyle («-da / -de / -ta / -te»). Kısa çizgi LETTER olmadığı için işaretin sağındaki dizi boş kalır, hiçbir giriş eşleşemez ve alıntı bozulmadan dizilir. Yanlış pozitifin iki ölçülen hafifleticisinden biri, prozada iddia olarak değil suite'te satır olarak."
232
+ },
233
+ {
234
+ "id": "tr-html-span-boundary-non-ascii-initial-fragment",
235
+ "rule": "quotes",
236
+ "mode": "html",
237
+ "in": "Dedi: '<b>Atatürk</b>'üm dedi.' Bitti.",
238
+ "out": "Dedi: “<b>Atatürk</b>’üm dedi.” Bitti.",
239
+ "note": "Baş harfi ASCII olmayan bir parça — «üm», U+00FC ile başlar. Eşleşir, çünkü kesme işaretinden sonraki dizi zaten küçük harflidir ve TAM karşılaştırılır; katlama yalnızca büyük harfli bir dizi için gerekir ve yalnızca ASCII A-Z'yi kapsar. Bu satır, ARCHITECTURE.md §4.4'ün yasağının bu alanı KISITLAMADIĞINI sabitler: küçük harfli Türkçe parçalar hiçbir katlamaya ihtiyaç duymaz, kayıp yalnızca büyük harfte gerçekleşir (ayrı satır)."
240
+ },
241
+ {
242
+ "id": "tr-html-span-boundary-ordinal-fragment",
243
+ "rule": "quotes",
244
+ "mode": "html",
245
+ "in": "Dedi: '<b>2</b>'nci kat.' Bitti.",
246
+ "out": "Dedi: “<b>2</b>’nci kat.” Bitti.",
247
+ "note": "Sayılara gelen sıra eki, TDK «Kesme İşareti» 4'ün kendi örneğinden («2'nci kat»). Aynı maddeden gelen «7,65'lik» ve «Atatürk'üm» de listededir; üçü de basılı örnekte kesme işaretinden sonraki dizinin TAMAMI olduğu ve çıplak bir sözcükle çakışmadığı için alınmıştır."
248
+ }
249
+ ]
250
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.0",
3
3
  "locale": "uk",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.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",
@@ -19,7 +19,8 @@
19
19
  "nl",
20
20
  "pl",
21
21
  "uk",
22
- "cs"
22
+ "cs",
23
+ "tr"
23
24
  ],
24
25
  "aliases": {
25
26
  "en": "en-US",
@@ -0,0 +1,72 @@
1
+ {
2
+ "locale": "tr",
3
+ "name": "Turkish",
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
+ "nin",
20
+ "nın",
21
+ "de",
22
+ "da",
23
+ "te",
24
+ "ye",
25
+ "yle",
26
+ "nı",
27
+ "dan",
28
+ "den",
29
+ "lik",
30
+ "nci",
31
+ "üm"
32
+ ]
33
+ }
34
+ },
35
+ "dash": {
36
+ "parenthetical": "none",
37
+ "range": "none"
38
+ },
39
+ "ellipsis": {
40
+ "abbreviatedAfterTerminal": true
41
+ },
42
+ "hyphen": {
43
+ "prefixes": [],
44
+ "suffixes": [],
45
+ "compounds": []
46
+ },
47
+ "nbsp": {
48
+ "beforePunctuation": [],
49
+ "narrowBeforePunctuation": [],
50
+ "afterShortWords": [],
51
+ "abbreviations": [
52
+ "Kur. Bşk.",
53
+ "Nö. Sb."
54
+ ],
55
+ "beforeUnits": [
56
+ "mm",
57
+ "cm",
58
+ "km",
59
+ "kg",
60
+ "mg",
61
+ "hl",
62
+ "m²",
63
+ "cm²",
64
+ "°C",
65
+ "ton"
66
+ ],
67
+ "beforeNumber": [],
68
+ "beforeWord": [],
69
+ "afterSymbols": [],
70
+ "initialBinding": "none"
71
+ }
72
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.5.0",
2
+ "spec": "1.6.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.5.0"
4
+ VERSION = "1.6.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.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iurii Rogulia
@@ -56,6 +56,7 @@ files:
56
56
  - lib/polytypo/data/fixtures/pt-PT.json
57
57
  - lib/polytypo/data/fixtures/ru.json
58
58
  - lib/polytypo/data/fixtures/sv.json
59
+ - lib/polytypo/data/fixtures/tr.json
59
60
  - lib/polytypo/data/fixtures/uk.json
60
61
  - lib/polytypo/data/locales/cs.json
61
62
  - lib/polytypo/data/locales/de-CH.json
@@ -75,6 +76,7 @@ files:
75
76
  - lib/polytypo/data/locales/registry.json
76
77
  - lib/polytypo/data/locales/ru.json
77
78
  - lib/polytypo/data/locales/sv.json
79
+ - lib/polytypo/data/locales/tr.json
78
80
  - lib/polytypo/data/locales/uk.json
79
81
  - lib/polytypo/data/rules/analyze.md
80
82
  - lib/polytypo/data/rules/apostrophe.md