prpm-dbp 0.11.0 → 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 +19 -1
- package/package.json +1 -1
- package/src/kamus.js +7 -0
- package/src/pedoman.js +15 -0
- package/src/tukar.js +6 -0
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
|
|
|
@@ -257,6 +260,21 @@ Urutan yang disyorkan:
|
|
|
257
260
|
|
|
258
261
|
Dengan cara ini pengguna tidak pernah menunggu PRPM, dan PRPM tidak pernah menerima trafik daripada aplikasi anda.
|
|
259
262
|
|
|
263
|
+
## Pengesahan bebas kodpoint
|
|
264
|
+
|
|
265
|
+
Keputusan lipatan kodpoint disahkan terhadap sumber kedua yang bebas: *Kaedah Pembelajaran Jawi: Peringkat Asas* (Haji Azman bin Haji Ahmad, Perpustakaan Negara Malaysia, 2015), Siri Ke-2 "Huruf Gubalan Melayu".
|
|
266
|
+
|
|
267
|
+
| Huruf | Kodpoint | Keputusan pakej |
|
|
268
|
+
|---|---|---|
|
|
269
|
+
| `ڤ` p | U+06A4 | bukan `پ` U+067E |
|
|
270
|
+
| `ڽ` ny | U+06BD | `پ` huruf berlainan, tidak pernah dilipat |
|
|
271
|
+
| `ݢ` g | U+0762 | varian `ڬ` U+06AC dilipat |
|
|
272
|
+
| `ک` kaf Jawi | U+06A9 | `ك` Arab U+0643 dilipat |
|
|
273
|
+
|
|
274
|
+
Siri yang sama membezakan kaf Arab daripada kaf Jawi secara eksplisit, iaitu perbezaan yang menyebabkan PRPM dan KamusDBP kelihatan bercanggah.
|
|
275
|
+
|
|
276
|
+
Buku itu berhak cipta terpelihara (PNM). Ia dirujuk di sini sebagai pengesahan, bukan disalin.
|
|
277
|
+
|
|
260
278
|
## Rantai kepercayaan
|
|
261
279
|
|
|
262
280
|
Setiap ejaan Jawi yang dikeluarkan membawa asal-usulnya. Jangan runtuhkan lapisan ini.
|
package/package.json
CHANGED
package/src/kamus.js
CHANGED
|
@@ -184,6 +184,13 @@ export async function cariKamus(kata, { timeout = 25000 } = {}) {
|
|
|
184
184
|
* Lipatan ini sengaja konservatif. Ta marbutah (ة) tidak dilipat ke ha (ه)
|
|
185
185
|
* kerana dalam sesetengah perkataan ia benar-benar membezakan makna.
|
|
186
186
|
*/
|
|
187
|
+
// Disahkan secara bebas terhadap "Kaedah Pembelajaran Jawi: Peringkat Asas"
|
|
188
|
+
// (Haji Azman bin Haji Ahmad, Perpustakaan Negara Malaysia, 2015), Siri Ke-2
|
|
189
|
+
// "Huruf Gubalan Melayu", yang menyenaraikan enam huruf ciptaan Melayu:
|
|
190
|
+
// چ U+0686 c ڠ U+06A0 ng ڤ U+06A4 p
|
|
191
|
+
// ݢ U+0762 g ۏ U+06CF v ڽ U+06BD ny
|
|
192
|
+
// Siri yang sama membezakan kaf Arab ك daripada kaf Jawi ک secara eksplisit.
|
|
193
|
+
// Kesemuanya sepadan dengan keputusan lipatan di bawah.
|
|
187
194
|
const LIPATAN = new Map([
|
|
188
195
|
['ك', 'ک'], // ك Arabic Kaf -> ک Keheh
|
|
189
196
|
['ڪ', 'ک'], // ڪ Swash Kaf -> ک Keheh
|
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)
|