prpm-dbp 0.11.1 → 0.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.
package/SKILL.md CHANGED
@@ -176,6 +176,7 @@ Ia mati secara lalai kerana ketepatannya diukur, bukan diandaikan. Diuji terhada
176
176
  | `di-` | 2,435 | 92% |
177
177
  | `se-` | 1,605 | 90% |
178
178
  | `ke-` | 976 | 88% |
179
+ | `-kan` | 3,046 | 92% |
179
180
 
180
181
  Sebahagian kegagalan itu artifak ukuran (`tamu` bukan `ta`+`mu`), jadi ketepatan sebenar lebih tinggi. Walaupun begitu, 98% tidak cukup untuk menjana ejaan secara senyap dalam alat yang seluruh tujuannya menghalang Jawi yang nampak betul tetapi salah.
181
182
 
@@ -187,7 +188,9 @@ $ npx prpm-dbp jawi nota.txt --pedoman
187
188
  dijana ikut Pedoman, BELUM disahkan DBP (1): Abadinya=اباديڽ [Pedoman DBP §15.1]
188
189
  ```
189
190
 
190
- Peraturan yang dilaksanakan: §13.5-13.7 (awalan `di-`, `se-`, `ke-`), §13.10 (tiga cara akhiran `-an`), §13.11 (tiga cara akhiran `-i`), §15.1 (kata ganti singkat `ku`, `mu`, `nya`).
191
+ Peraturan yang dilaksanakan: §13.5-13.7 (awalan `di-`, `se-`, `ke-`), §13.9 (akhiran `-kan`), §13.10 (tiga cara akhiran `-an`), §13.11 (tiga cara akhiran `-i`), §15.1 (kata ganti singkat `ku`, `mu`, `nya`).
192
+
193
+ **Awas terhadap nota panduan tidak rasmi.** Nota sekolah sering menyatakan "huruf alif ditambah semula apabila menerima imbuhan" sebagai peraturan menyeluruh. Diuji terhadap data sebenar, itu tidak benar: `suka` سوک menjadi `sukakan` سوککن dan `lukanya` لوکڽ, kedua-duanya tanpa alif. Penambahan alif berlaku bagi `-an` dan `-i` sahaja, menurut Catatan §13.10(ii) dan §13.11(i).
191
194
 
192
195
  **Kodpoint setiap imbuhan disahkan empirik daripada dataset, bukan dibaca daripada peraturan.** Hamzah dalam akhiran ialah `ء` U+0621 berdiri sendiri, manakala dalam awalan ia `أ` U+0623 di atas alif. Peraturan bertulis tidak membezakan dua itu.
193
196
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prpm-dbp",
3
- "version": "0.11.1",
3
+ "version": "0.12.0",
4
4
  "description": "Semak ejaan Bahasa Melayu dan Jawi terhadap PRPM Dewan Bahasa dan Pustaka. CLI dan skill untuk AI agent.",
5
5
  "keywords": [
6
6
  "bahasa-melayu",
package/src/pedoman.js CHANGED
@@ -185,6 +185,21 @@ export function imbuhAkhiranI(jawiDasar, rumiDasar) {
185
185
  return { jawi: jawiDasar + YA, rujukan: 'Pedoman DBP §13.11(iii)' }
186
186
  }
187
187
 
188
+ /**
189
+ * §13.9 — Akhiran -kan ditulis kaf-nun, dilekatkan terus tanpa perubahan
190
+ * pada kata dasar.
191
+ *
192
+ * Nota panduan sekolah sering menyatakan "huruf alif ditambah semula apabila
193
+ * menerima imbuhan". Itu terlalu menyeluruh: diuji terhadap data sebenar,
194
+ * suka سوک menjadi sukakan سوککن dan lukanya لوکڽ, tanpa alif. Penambahan
195
+ * alif berlaku bagi -an dan -i sahaja, menurut Catatan §13.10(ii) dan
196
+ * §13.11(i).
197
+ */
198
+ export function imbuhAkhiranKan(jawiDasar) {
199
+ if (!jawiDasar) return null
200
+ return { jawi: jawiDasar + 'کن', rujukan: 'Pedoman DBP §13.9' }
201
+ }
202
+
188
203
  /**
189
204
  * §15.1 — Kata ganti singkat ditulis serangkai dengan kata di depannya.
190
205
  * ku -> kaf-wau mu -> mim-wau nya -> nya
package/src/tukar.js CHANGED
@@ -14,6 +14,7 @@ import { cariDataset, muatDataset } from './dataset.js'
14
14
  import { cariNama, mungkinAkronim, mungkinNamaKhas } from './nama.js'
15
15
  import {
16
16
  imbuhAkhiranAn,
17
+ imbuhAkhiranKan,
17
18
  imbuhAkhiranI,
18
19
  imbuhAwalan,
19
20
  imbuhGanti,
@@ -113,6 +114,11 @@ async function janaIkutPedoman(kata, cache, opts, gunaDataset) {
113
114
  if (hasil) return hasil
114
115
  }
115
116
 
117
+ if (kata.endsWith('kan') && kata.length > 5) {
118
+ const hasil = imbuhAkhiranKan(await ejaan(kata.slice(0, -3)))
119
+ if (hasil) return hasil
120
+ }
121
+
116
122
  if (kata.endsWith('an') && kata.length > 4) {
117
123
  const dasar = kata.slice(0, -2)
118
124
  const hasil = imbuhAkhiranAn(await ejaan(dasar), dasar)