urdu-text-utils 0.1.3 → 0.1.5
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/CHANGELOG.md +11 -0
- package/README.md +27 -5
- package/dist/index.cjs +519 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +64 -4
- package/dist/index.d.ts +64 -4
- package/dist/index.js +516 -7
- package/dist/index.js.map +1 -1
- package/package.json +31 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.5
|
|
4
|
+
|
|
5
|
+
- Expand transliteration dictionary to 1,700+ entries across classical/poetic register, commerce & digital terminology, law & governance, geography, and rich verbal inflections.
|
|
6
|
+
- Expand `ROMAN_VARIANTS` with popular Roman Urdu texting and chat conventions (`kidhr`, `thek`, `sahi`, `behtareen`, `mashaallah`, `jazakallah`, etc.).
|
|
7
|
+
- Add automated sitemap generation, OpenGraph metadata, and JSON-LD structured data for docs.
|
|
8
|
+
|
|
9
|
+
## 0.1.4
|
|
10
|
+
|
|
11
|
+
- Add Urdu stop words module (`URDU_STOP_WORDS`, `isStopWord`, `filterStopWords`, `removeStopWords`) with a curated set of 130+ canonical functional words.
|
|
12
|
+
- Enhance sentence segmentation in `splitSentences` and `countSentences` with abbreviation & honorific protection (e.g. `ڈاکٹر.`, `پروفیسر.`, `صاحب.`), numeric decimal protection, and optional `preserveTerminators` option.
|
|
13
|
+
|
|
3
14
|
## 0.1.3
|
|
4
15
|
|
|
5
16
|
- Significantly expand transliteration dictionary coverage across pronouns & oblique forms (`مجھے`, `ہمیں`, `انہیں`, `اسے`, `جسے`), everyday verbs and inflections, calendar & weekdays, numbers & ordinals, food, household objects, health, geography, and common Pakistani names.
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# urdu-text-utils
|
|
1
|
+
# urdu-text-utils — Urdu Text Processing Toolkit for JavaScript & TypeScript
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/urdu-text-utils)
|
|
4
4
|
[](https://github.com/Zaid-maker/urdu-text-utils/actions/workflows/ci.yml)
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
[](https://www.npmjs.com/package/urdu-text-utils)
|
|
8
8
|
[](./LICENSE)
|
|
9
9
|
|
|
10
|
-
Urdu text processing toolkit for JavaScript and TypeScript.
|
|
10
|
+
A complete, lightweight **Urdu text processing toolkit for JavaScript and TypeScript** (Node.js, Deno, Bun, and browsers). Zero runtime dependencies. Provides Unicode normalization, Roman Urdu transliteration, Urdu stop words, script detection, Urdu digit conversion, diacritics (aerab / harakat) removal, alphabetical collation / sorting, fuzzy search, and text statistics.
|
|
11
11
|
|
|
12
|
-
Zero runtime dependencies. ESM + CJS.
|
|
12
|
+
Zero runtime dependencies. ESM + CJS. Fully typed.
|
|
13
13
|
|
|
14
14
|
**[Documentation and live playground →](https://zaid-maker.github.io/urdu-text-utils/)**
|
|
15
15
|
|
|
@@ -20,8 +20,14 @@ npm install urdu-text-utils
|
|
|
20
20
|
```ts
|
|
21
21
|
import {
|
|
22
22
|
normalizeUrdu,
|
|
23
|
+
romanize,
|
|
24
|
+
romanToUrdu,
|
|
25
|
+
urduSlug,
|
|
26
|
+
isStopWord,
|
|
27
|
+
removeStopWords,
|
|
23
28
|
isUrdu,
|
|
24
29
|
countWords,
|
|
30
|
+
splitSentences,
|
|
25
31
|
convertNumbers,
|
|
26
32
|
removeDiacritics,
|
|
27
33
|
sortUrdu,
|
|
@@ -76,14 +82,30 @@ hasUrduSpecificLetters("لڑکی"); // true — ڑ does not exist in Arabic
|
|
|
76
82
|
hasUrduSpecificLetters("كتاب مدرسة"); // false
|
|
77
83
|
```
|
|
78
84
|
|
|
79
|
-
## Word and sentence
|
|
85
|
+
## Word and sentence tokenization
|
|
80
86
|
|
|
81
87
|
```ts
|
|
82
88
|
countWords("پاکستان ایک خوبصورت ملک ہے"); // 5
|
|
83
89
|
countWords("آپ کیسے ہیں؟"); // 3 — attached punctuation is not a word
|
|
84
90
|
countSentences("یہ پہلا جملہ ہے۔ یہ دوسرا ہے۔"); // 2
|
|
85
91
|
splitWords(text); // string[]
|
|
86
|
-
splitSentences(text); // string[]
|
|
92
|
+
splitSentences(text); // string[] — protects abbreviations like ڈاکٹر. and decimals
|
|
93
|
+
splitSentences(text, { preserveTerminators: true }); // preserves ending punctuation
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Stop words
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
import { isStopWord, filterStopWords, removeStopWords, URDU_STOP_WORDS } from "urdu-text-utils";
|
|
100
|
+
|
|
101
|
+
isStopWord("اور"); // true
|
|
102
|
+
isStopWord("کتاب"); // false
|
|
103
|
+
|
|
104
|
+
filterStopWords(["یہ", "ایک", "بہترین", "کتاب", "ہے"]);
|
|
105
|
+
// ["بہترین", "کتاب"]
|
|
106
|
+
|
|
107
|
+
removeStopWords("پاکستان ایک خوبصورت ملک ہے");
|
|
108
|
+
// "پاکستان خوبصورت ملک"
|
|
87
109
|
```
|
|
88
110
|
|
|
89
111
|
## Urdu numbers
|
package/dist/index.cjs
CHANGED
|
@@ -300,12 +300,51 @@ function splitWords(input) {
|
|
|
300
300
|
if (!input) return [];
|
|
301
301
|
return input.split(WORD_SPLIT_RE).map((w) => w.trim()).filter((w) => w.length > 0);
|
|
302
302
|
}
|
|
303
|
-
|
|
304
|
-
|
|
303
|
+
var ABBREVIATIONS = [
|
|
304
|
+
"\u0688\u0627\u06A9\u0679\u0631",
|
|
305
|
+
"\u067E\u0631\u0648\u0641\u06CC\u0633\u0631",
|
|
306
|
+
"\u0627\u0646\u062C\u06CC\u0646\u0626\u0631",
|
|
307
|
+
"\u0627\u06CC\u0688\u0648\u0648\u06A9\u06CC\u0679",
|
|
308
|
+
"\u062C\u0646\u0627\u0628",
|
|
309
|
+
"\u0635\u0627\u062D\u0628",
|
|
310
|
+
"\u0635\u0627\u062D\u0628\u06C1",
|
|
311
|
+
"\u0645\u062D\u062A\u0631\u0645",
|
|
312
|
+
"\u0645\u062D\u062A\u0631\u0645\u06C1",
|
|
313
|
+
"\u0645\u0648\u0644\u0627\u0646\u0627",
|
|
314
|
+
"\u0645\u0641\u062A\u06CC",
|
|
315
|
+
"\u0639\u0644\u0627\u0645\u06C1",
|
|
316
|
+
"\u0628\u06CC\u06AF\u0645",
|
|
317
|
+
"\u0648\u063A\u06CC\u0631\u06C1",
|
|
318
|
+
"\u0631\u062D\u0645\u062A\u06C1",
|
|
319
|
+
"\u0631\u0636\u06CC",
|
|
320
|
+
"\u062A\u0639\u0627\u0644\u06CC",
|
|
321
|
+
"\u062A\u0639\u0627\u0644\u06CC\u0670",
|
|
322
|
+
"\u0639\u0644\u06CC\u06C1",
|
|
323
|
+
"\u0627\u0644\u0633\u0644\u0627\u0645",
|
|
324
|
+
"\u0635\u0644\u06CC",
|
|
325
|
+
"\u0648\u0633\u0644\u0645"
|
|
326
|
+
];
|
|
327
|
+
var ABBREV_PATTERN = new RegExp(`(?:${ABBREVIATIONS.join("|")})[.\u06D4]`, "gu");
|
|
328
|
+
function countSentences(input, options) {
|
|
329
|
+
return splitSentences(input, options).length;
|
|
305
330
|
}
|
|
306
|
-
function splitSentences(input) {
|
|
331
|
+
function splitSentences(input, options = {}) {
|
|
307
332
|
if (!input) return [];
|
|
308
|
-
|
|
333
|
+
const { preserveTerminators = false } = options;
|
|
334
|
+
const PROTECTED_DOT = "\uE000";
|
|
335
|
+
const PROTECTED_URDU_FULL_STOP = "\uE001";
|
|
336
|
+
let sanitized = input.replace(/(\d)\.(\d)/gu, `$1${PROTECTED_DOT}$2`).replace(ABBREV_PATTERN, (match) => {
|
|
337
|
+
return match.replace(/\./g, PROTECTED_DOT).replace(/۔/g, PROTECTED_URDU_FULL_STOP);
|
|
338
|
+
});
|
|
339
|
+
if (preserveTerminators) {
|
|
340
|
+
const matches = sanitized.match(/[^۔؟?!.…]+[۔؟?!.…]+|[^۔؟?!.…]+$/gu) ?? [];
|
|
341
|
+
return matches.map(
|
|
342
|
+
(s) => s.replace(new RegExp(PROTECTED_DOT, "gu"), ".").replace(new RegExp(PROTECTED_URDU_FULL_STOP, "gu"), "\u06D4").trim()
|
|
343
|
+
).filter((s) => s.length > 0);
|
|
344
|
+
}
|
|
345
|
+
return sanitized.split(SENTENCE_SPLIT_RE).map(
|
|
346
|
+
(s) => s.replace(new RegExp(PROTECTED_DOT, "gu"), ".").replace(new RegExp(PROTECTED_URDU_FULL_STOP, "gu"), "\u06D4").trim()
|
|
347
|
+
).filter((s) => s.length > 0);
|
|
309
348
|
}
|
|
310
349
|
function analyzeUrdu(input) {
|
|
311
350
|
const text = input ?? "";
|
|
@@ -328,6 +367,264 @@ function analyzeUrdu(input) {
|
|
|
328
367
|
};
|
|
329
368
|
}
|
|
330
369
|
|
|
370
|
+
// src/stopwords.ts
|
|
371
|
+
var URDU_STOP_WORDS = /* @__PURE__ */ new Set([
|
|
372
|
+
// Tense auxiliaries & copulas
|
|
373
|
+
"\u06C1\u06D2",
|
|
374
|
+
"\u06C1\u06CC\u06BA",
|
|
375
|
+
"\u06C1\u0648\u06BA",
|
|
376
|
+
"\u06C1\u0648",
|
|
377
|
+
"\u062A\u06BE\u0627",
|
|
378
|
+
"\u062A\u06BE\u06CC",
|
|
379
|
+
"\u062A\u06BE\u06D2",
|
|
380
|
+
"\u062A\u06BE\u06CC\u06BA",
|
|
381
|
+
"\u06C1\u0648\u06AF\u0627",
|
|
382
|
+
"\u06C1\u0648\u06AF\u06CC",
|
|
383
|
+
"\u06C1\u0648\u0646\u06AF\u06D2",
|
|
384
|
+
"\u06C1\u0648\u06BA\u06AF\u06D2",
|
|
385
|
+
"\u06C1\u0648\u0646\u0627",
|
|
386
|
+
"\u06C1\u0648\u0646\u06D2",
|
|
387
|
+
"\u06C1\u0648\u0627",
|
|
388
|
+
"\u06C1\u0648\u0626\u06CC",
|
|
389
|
+
"\u06C1\u0648\u0626\u06D2",
|
|
390
|
+
// Postpositions, relations & prepositions
|
|
391
|
+
"\u06A9\u0627",
|
|
392
|
+
"\u06A9\u06CC",
|
|
393
|
+
"\u06A9\u06D2",
|
|
394
|
+
"\u06A9\u0648",
|
|
395
|
+
"\u0646\u06D2",
|
|
396
|
+
"\u0633\u06D2",
|
|
397
|
+
"\u067E\u0631",
|
|
398
|
+
"\u062A\u06A9",
|
|
399
|
+
"\u0645\u06CC\u06BA",
|
|
400
|
+
"\u0644\u06CC\u06D2",
|
|
401
|
+
"\u0633\u0627\u062A\u06BE",
|
|
402
|
+
"\u0628\u063A\u06CC\u0631",
|
|
403
|
+
"\u0637\u0631\u062D",
|
|
404
|
+
"\u0637\u0631\u0641",
|
|
405
|
+
"\u0628\u0627\u0631\u06D2",
|
|
406
|
+
"\u0628\u0639\u062F",
|
|
407
|
+
"\u067E\u06C1\u0644\u06D2",
|
|
408
|
+
"\u062F\u0648\u0631\u0627\u0646",
|
|
409
|
+
"\u062F\u0631\u0645\u06CC\u0627\u0646",
|
|
410
|
+
"\u0639\u0644\u0627\u0648\u06C1",
|
|
411
|
+
"\u0633\u0648\u0627\u0626\u06D2",
|
|
412
|
+
"\u0633\u0648\u0627",
|
|
413
|
+
"\u0645\u0637\u0627\u0628\u0642",
|
|
414
|
+
"\u0628\u0627\u0639\u062B",
|
|
415
|
+
"\u0630\u0631\u06CC\u0639\u06D2",
|
|
416
|
+
"\u062A\u062D\u062A",
|
|
417
|
+
"\u0627\u0648\u067E\u0631",
|
|
418
|
+
"\u0646\u06CC\u0686\u06D2",
|
|
419
|
+
"\u0622\u06AF\u06D2",
|
|
420
|
+
"\u067E\u06CC\u0686\u06BE\u06D2",
|
|
421
|
+
"\u0627\u0646\u062F\u0631",
|
|
422
|
+
"\u0628\u0627\u06C1\u0631",
|
|
423
|
+
"\u067E\u0627\u0633",
|
|
424
|
+
"\u0642\u0631\u06CC\u0628",
|
|
425
|
+
"\u0646\u0632\u062F\u06CC\u06A9",
|
|
426
|
+
// Conjunctions & discourse markers
|
|
427
|
+
"\u0627\u0648\u0631",
|
|
428
|
+
"\u06CC\u0627",
|
|
429
|
+
"\u0627\u06AF\u0631",
|
|
430
|
+
"\u0644\u06CC\u06A9\u0646",
|
|
431
|
+
"\u0645\u06AF\u0631",
|
|
432
|
+
"\u062A\u0648",
|
|
433
|
+
"\u0628\u06BE\u06CC",
|
|
434
|
+
"\u06C1\u06CC",
|
|
435
|
+
"\u0646\u06C1",
|
|
436
|
+
"\u0646\u06C1\u06CC\u06BA",
|
|
437
|
+
"\u0645\u062A",
|
|
438
|
+
"\u0646\u0627",
|
|
439
|
+
"\u0628\u0644\u06A9\u06C1",
|
|
440
|
+
"\u062D\u0627\u0644\u0627\u0646\u06A9\u06C1",
|
|
441
|
+
"\u0686\u0648\u0646\u06A9\u06C1",
|
|
442
|
+
"\u06A9\u06CC\u0648\u0646\u06A9\u06C1",
|
|
443
|
+
"\u062A\u0627\u06A9\u06C1",
|
|
444
|
+
"\u0648\u0631\u0646\u06C1",
|
|
445
|
+
"\u0627\u0644\u0628\u062A\u06C1",
|
|
446
|
+
"\u0645\u062B\u0644\u0627\u064B",
|
|
447
|
+
"\u06CC\u0639\u0646\u06CC",
|
|
448
|
+
"\u062E\u0635\u0648\u0635\u0627\u064B",
|
|
449
|
+
"\u0639\u0645\u0648\u0645\u0627\u064B",
|
|
450
|
+
"\u0686\u0646\u0627\u0646\u0686\u06C1",
|
|
451
|
+
"\u062E\u0648\u0627\u06C1",
|
|
452
|
+
"\u0686\u0627\u06C1\u06D2",
|
|
453
|
+
"\u06AF\u0648\u06CC\u0627",
|
|
454
|
+
"\u062A\u0627\u06C1\u0645",
|
|
455
|
+
"\u0646\u06CC\u0632",
|
|
456
|
+
"\u062D\u062A\u06CC",
|
|
457
|
+
"\u0648\u063A\u06CC\u0631\u06C1",
|
|
458
|
+
"\u0635\u0631\u0641",
|
|
459
|
+
"\u0645\u062D\u0636",
|
|
460
|
+
"\u0641\u0642\u0637",
|
|
461
|
+
// Pronouns, determiners & question words
|
|
462
|
+
"\u06C1\u0645",
|
|
463
|
+
"\u062A\u0645",
|
|
464
|
+
"\u0622\u067E",
|
|
465
|
+
"\u0648\u06C1",
|
|
466
|
+
"\u06CC\u06C1",
|
|
467
|
+
"\u0645\u06CC\u0631\u0627",
|
|
468
|
+
"\u0645\u06CC\u0631\u06CC",
|
|
469
|
+
"\u0645\u06CC\u0631\u06D2",
|
|
470
|
+
"\u06C1\u0645\u0627\u0631\u0627",
|
|
471
|
+
"\u06C1\u0645\u0627\u0631\u06CC",
|
|
472
|
+
"\u06C1\u0645\u0627\u0631\u06D2",
|
|
473
|
+
"\u062A\u0645\u06C1\u0627\u0631\u0627",
|
|
474
|
+
"\u062A\u0645\u06C1\u0627\u0631\u06CC",
|
|
475
|
+
"\u062A\u0645\u06C1\u0627\u0631\u06D2",
|
|
476
|
+
"\u0622\u067E\u06A9\u0627",
|
|
477
|
+
"\u0622\u067E\u06A9\u06CC",
|
|
478
|
+
"\u0622\u067E\u06A9\u06D2",
|
|
479
|
+
"\u0627\u0633",
|
|
480
|
+
"\u0627\u0633\u06A9\u0627",
|
|
481
|
+
"\u0627\u0633\u06A9\u06CC",
|
|
482
|
+
"\u0627\u0633\u06A9\u06D2",
|
|
483
|
+
"\u0627\u0633\u06D2",
|
|
484
|
+
"\u0627\u0646",
|
|
485
|
+
"\u0627\u0646\u06A9\u0627",
|
|
486
|
+
"\u0627\u0646\u06A9\u06CC",
|
|
487
|
+
"\u0627\u0646\u06A9\u06D2",
|
|
488
|
+
"\u0627\u0646\u06C1\u06CC\u06BA",
|
|
489
|
+
"\u0645\u062C\u06BE\u06D2",
|
|
490
|
+
"\u06C1\u0645\u06CC\u06BA",
|
|
491
|
+
"\u062A\u0645\u06C1\u06CC\u06BA",
|
|
492
|
+
"\u062C\u0633",
|
|
493
|
+
"\u062C\u0633\u06A9\u0627",
|
|
494
|
+
"\u062C\u0633\u06A9\u06CC",
|
|
495
|
+
"\u062C\u0633\u06A9\u06D2",
|
|
496
|
+
"\u062C\u0633\u06D2",
|
|
497
|
+
"\u062C\u0646",
|
|
498
|
+
"\u062C\u0646\u06A9\u0627",
|
|
499
|
+
"\u062C\u0646\u06A9\u06CC",
|
|
500
|
+
"\u062C\u0646\u06A9\u06D2",
|
|
501
|
+
"\u062C\u0646\u06C1\u0648\u06BA",
|
|
502
|
+
"\u0627\u0646\u06C1\u0648\u06BA",
|
|
503
|
+
"\u06A9\u0633",
|
|
504
|
+
"\u06A9\u0633\u06A9\u0627",
|
|
505
|
+
"\u06A9\u0633\u06A9\u06CC",
|
|
506
|
+
"\u06A9\u0633\u06A9\u06D2",
|
|
507
|
+
"\u06A9\u0633\u06D2",
|
|
508
|
+
"\u06A9\u0633\u06A9\u0648",
|
|
509
|
+
"\u06A9\u0648\u0646",
|
|
510
|
+
"\u06A9\u06CC\u0627",
|
|
511
|
+
"\u06A9\u06C1\u0627\u06BA",
|
|
512
|
+
"\u06A9\u062F\u06BE\u0631",
|
|
513
|
+
"\u0627\u062F\u06BE\u0631",
|
|
514
|
+
"\u062C\u062F\u06BE\u0631",
|
|
515
|
+
"\u06A9\u0628",
|
|
516
|
+
"\u06A9\u06CC\u0648\u06BA",
|
|
517
|
+
"\u06A9\u06CC\u0633\u06D2",
|
|
518
|
+
"\u06A9\u06CC\u0633\u0627",
|
|
519
|
+
"\u06A9\u06CC\u0633\u06CC",
|
|
520
|
+
"\u06A9\u062A\u0646\u0627",
|
|
521
|
+
"\u06A9\u062A\u0646\u06CC",
|
|
522
|
+
"\u06A9\u062A\u0646\u06D2",
|
|
523
|
+
"\u062C\u0648",
|
|
524
|
+
"\u0633\u0628",
|
|
525
|
+
"\u0633\u0628\u06BE\u06CC",
|
|
526
|
+
"\u06A9\u0648\u0626\u06CC",
|
|
527
|
+
"\u06A9\u0686\u06BE",
|
|
528
|
+
"\u06C1\u0631",
|
|
529
|
+
"\u0627\u06CC\u06A9",
|
|
530
|
+
"\u0627\u067E\u0646\u0627",
|
|
531
|
+
"\u0627\u067E\u0646\u06CC",
|
|
532
|
+
"\u0627\u067E\u0646\u06D2",
|
|
533
|
+
"\u062E\u0648\u062F",
|
|
534
|
+
// Common light/auxiliary verb forms
|
|
535
|
+
"\u06A9\u0631\u0646\u0627",
|
|
536
|
+
"\u06A9\u0631\u062A\u0627",
|
|
537
|
+
"\u06A9\u0631\u062A\u06CC",
|
|
538
|
+
"\u06A9\u0631\u062A\u06D2",
|
|
539
|
+
"\u06A9\u0631\u06CC\u06BA",
|
|
540
|
+
"\u06A9\u0631\u0648",
|
|
541
|
+
"\u06A9\u0631",
|
|
542
|
+
"\u06A9\u0631\u0646\u06D2",
|
|
543
|
+
"\u06A9\u06CC\u06D2",
|
|
544
|
+
"\u062C\u0627\u0646\u0627",
|
|
545
|
+
"\u062C\u0627\u062A\u0627",
|
|
546
|
+
"\u062C\u0627\u062A\u06CC",
|
|
547
|
+
"\u062C\u0627\u062A\u06D2",
|
|
548
|
+
"\u062C\u0627\u0626\u06D2",
|
|
549
|
+
"\u062C\u0627\u0626\u06CC\u06BA",
|
|
550
|
+
"\u062C\u0627\u0624",
|
|
551
|
+
"\u062C\u0627",
|
|
552
|
+
"\u062C\u0627\u0646\u06D2",
|
|
553
|
+
"\u06AF\u06CC\u0627",
|
|
554
|
+
"\u06AF\u0626\u06CC",
|
|
555
|
+
"\u06AF\u0626\u06D2",
|
|
556
|
+
"\u0622\u0646\u0627",
|
|
557
|
+
"\u0622\u062A\u0627",
|
|
558
|
+
"\u0622\u062A\u06CC",
|
|
559
|
+
"\u0622\u062A\u06D2",
|
|
560
|
+
"\u0622\u0626\u06D2",
|
|
561
|
+
"\u0622\u0626\u06CC\u06BA",
|
|
562
|
+
"\u0622\u06CC\u0627",
|
|
563
|
+
"\u0622\u0626\u06CC",
|
|
564
|
+
"\u0622\u0646\u06D2",
|
|
565
|
+
"\u0622\u0624",
|
|
566
|
+
"\u0622",
|
|
567
|
+
"\u062F\u06CC\u0646\u0627",
|
|
568
|
+
"\u062F\u06CC\u062A\u0627",
|
|
569
|
+
"\u062F\u06CC\u062A\u06CC",
|
|
570
|
+
"\u062F\u06CC\u062A\u06D2",
|
|
571
|
+
"\u062F\u06CC\u0627",
|
|
572
|
+
"\u062F\u06CC\u06D2",
|
|
573
|
+
"\u062F\u06D2",
|
|
574
|
+
"\u062F\u0648",
|
|
575
|
+
"\u062F\u06CC\u06BA",
|
|
576
|
+
"\u062F\u06CC\u0646\u06D2",
|
|
577
|
+
"\u0644\u06CC\u0646\u0627",
|
|
578
|
+
"\u0644\u06CC\u062A\u0627",
|
|
579
|
+
"\u0644\u06CC\u062A\u06CC",
|
|
580
|
+
"\u0644\u06CC\u062A\u06D2",
|
|
581
|
+
"\u0644\u06CC\u0627",
|
|
582
|
+
"\u0644\u06D2",
|
|
583
|
+
"\u0644\u0648",
|
|
584
|
+
"\u0644\u06CC\u06BA",
|
|
585
|
+
"\u0644\u06CC\u0646\u06D2",
|
|
586
|
+
"\u0631\u06C1\u0646\u0627",
|
|
587
|
+
"\u0631\u06C1\u0627",
|
|
588
|
+
"\u0631\u06C1\u06CC",
|
|
589
|
+
"\u0631\u06C1\u06D2",
|
|
590
|
+
"\u0631\u06C1\u062A\u0627",
|
|
591
|
+
"\u0631\u06C1\u062A\u06CC",
|
|
592
|
+
"\u0631\u06C1\u062A\u06D2",
|
|
593
|
+
"\u0631\u06C1\u0646\u06D2",
|
|
594
|
+
"\u0633\u06A9\u0646\u0627",
|
|
595
|
+
"\u0633\u06A9\u062A\u0627",
|
|
596
|
+
"\u0633\u06A9\u062A\u06CC",
|
|
597
|
+
"\u0633\u06A9\u062A\u06D2",
|
|
598
|
+
"\u0648\u0627\u0644\u0627",
|
|
599
|
+
"\u0648\u0627\u0644\u06CC",
|
|
600
|
+
"\u0648\u0627\u0644\u06D2"
|
|
601
|
+
]);
|
|
602
|
+
function toStopWordSet(custom) {
|
|
603
|
+
if (!custom) return URDU_STOP_WORDS;
|
|
604
|
+
if (custom instanceof Set) return custom;
|
|
605
|
+
return new Set(custom.map((w) => normalizeUrdu(w.trim())));
|
|
606
|
+
}
|
|
607
|
+
function isStopWord(word, customStopWords) {
|
|
608
|
+
if (!word) return false;
|
|
609
|
+
const normalized = normalizeUrdu(word.trim());
|
|
610
|
+
const stopSet = toStopWordSet(customStopWords);
|
|
611
|
+
return stopSet.has(normalized);
|
|
612
|
+
}
|
|
613
|
+
function filterStopWords(words, customStopWords) {
|
|
614
|
+
if (!words || words.length === 0) return [];
|
|
615
|
+
const stopSet = toStopWordSet(customStopWords);
|
|
616
|
+
return words.filter((w) => {
|
|
617
|
+
const normalized = normalizeUrdu(w.trim());
|
|
618
|
+
return normalized.length > 0 && !stopSet.has(normalized);
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
function removeStopWords(text, customStopWords) {
|
|
622
|
+
if (!text) return "";
|
|
623
|
+
const words = splitWords(text);
|
|
624
|
+
const filtered = filterStopWords(words, customStopWords);
|
|
625
|
+
return filtered.join(" ");
|
|
626
|
+
}
|
|
627
|
+
|
|
331
628
|
// src/collate.ts
|
|
332
629
|
var ALPHABET = [
|
|
333
630
|
"\u0627",
|
|
@@ -2588,7 +2885,191 @@ var WORD_DICTIONARY = {
|
|
|
2588
2885
|
"\u0641\u0631\u0632\u0627\u0646\u06C1": "farzana",
|
|
2589
2886
|
"\u0637\u0627\u06C1\u0631\u06C1": "tahira",
|
|
2590
2887
|
"\u0639\u0635\u0645\u062A": "ismat",
|
|
2591
|
-
"\u0646\u0635\u0631\u062A": "nusrat"
|
|
2888
|
+
"\u0646\u0635\u0631\u062A": "nusrat",
|
|
2889
|
+
// ---- classical, poetic and literary vocabulary ----
|
|
2890
|
+
"\u06AF\u0644\u0633\u062A\u0627\u06BA": "gulistan",
|
|
2891
|
+
"\u06AF\u0644\u0634\u0646": "gulshan",
|
|
2892
|
+
"\u0628\u06C1\u0627\u0631\u0627\u06BA": "baharan",
|
|
2893
|
+
"\u067E\u0631\u0648\u0627\u0646\u06C1": "parwana",
|
|
2894
|
+
"\u0634\u0645\u0639": "shama",
|
|
2895
|
+
"\u0633\u0627\u0642\u06CC": "saqi",
|
|
2896
|
+
"\u0645\u06CC\u062E\u0627\u0646\u06C1": "maikhana",
|
|
2897
|
+
"\u062C\u0627\u0645": "jaam",
|
|
2898
|
+
"\u0635\u0631\u0627\u062D\u06CC": "surahi",
|
|
2899
|
+
"\u0631\u0646\u062F": "rind",
|
|
2900
|
+
"\u0645\u062D\u062A\u0633\u0628": "muhtasib",
|
|
2901
|
+
"\u0642\u0627\u0635\u062F": "qasid",
|
|
2902
|
+
"\u067E\u06CC\u0627\u0645\u0628\u0631": "payambar",
|
|
2903
|
+
"\u0631\u0642\u06CC\u0628": "raqeeb",
|
|
2904
|
+
"\u062D\u0628\u06CC\u0628": "habeeb",
|
|
2905
|
+
"\u0645\u062D\u0628\u0648\u0628": "mahboob",
|
|
2906
|
+
"\u0645\u0639\u0634\u0648\u0642": "mashooq",
|
|
2907
|
+
"\u0635\u0646\u0645": "sanam",
|
|
2908
|
+
"\u0633\u0646\u06AF\u062F\u0644": "sangdil",
|
|
2909
|
+
"\u0628\u06CC\u062F\u0631\u062F": "bedard",
|
|
2910
|
+
"\u063A\u0645\u06AF\u0633\u0627\u0631": "ghamgusar",
|
|
2911
|
+
"\u0645\u0633\u06CC\u062D\u0627": "maseeha",
|
|
2912
|
+
"\u0646\u0627\u0635\u062D": "nasih",
|
|
2913
|
+
"\u0648\u0627\u0639\u0638": "waiz",
|
|
2914
|
+
"\u062A\u0634\u0646\u06C1": "tishna",
|
|
2915
|
+
"\u06AF\u06CC\u0633\u0648": "gesu",
|
|
2916
|
+
"\u0632\u0644\u0641": "zulf",
|
|
2917
|
+
"\u062F\u06CC\u062F\u0627\u0631": "deedar",
|
|
2918
|
+
"\u062C\u0644\u0648\u06C1": "jalwa",
|
|
2919
|
+
"\u062D\u062C\u0627\u0628": "hijab",
|
|
2920
|
+
"\u0646\u0642\u0627\u0628": "niqab",
|
|
2921
|
+
"\u0633\u0648\u0632": "soz",
|
|
2922
|
+
"\u0622\u06C1\u0646\u06AF": "aahang",
|
|
2923
|
+
"\u0646\u063A\u0645\u06C1": "naghma",
|
|
2924
|
+
"\u062A\u0631\u0627\u0646\u06C1": "tarana",
|
|
2925
|
+
"\u062F\u0627\u0633\u062A\u0627\u06BA": "dastan",
|
|
2926
|
+
"\u062D\u0648\u0631": "hoor",
|
|
2927
|
+
"\u067E\u0631\u06CC": "pari",
|
|
2928
|
+
"\u062F\u06CC\u0648": "deo",
|
|
2929
|
+
"\u062C\u0627\u062F\u0648": "jadoo",
|
|
2930
|
+
"\u0637\u0644\u0633\u0645": "tilism",
|
|
2931
|
+
"\u0627\u0641\u0633\u0648\u0646": "afsoon",
|
|
2932
|
+
"\u0633\u062D\u0631\u0627\u0646\u06AF\u06CC\u0632": "sehrangeez",
|
|
2933
|
+
"\u0641\u0633\u0648\u06BA": "fusoon",
|
|
2934
|
+
"\u062C\u0646\u0648\u06BA": "junoon",
|
|
2935
|
+
"\u0633\u0648\u062F\u0627": "sauda",
|
|
2936
|
+
"\u0648\u062D\u0634\u062A": "wahshat",
|
|
2937
|
+
"\u0627\u0631\u0645\u0627\u0646": "arman",
|
|
2938
|
+
"\u0630\u0648\u0642": "zauq",
|
|
2939
|
+
"\u0648\u062C\u062F": "wajd",
|
|
2940
|
+
"\u0645\u0633\u062A\u06CC": "masti",
|
|
2941
|
+
"\u06A9\u06CC\u0641": "kaif",
|
|
2942
|
+
"\u062E\u0645\u0627\u0631": "khumar",
|
|
2943
|
+
"\u0646\u0634\u06C1": "nasha",
|
|
2944
|
+
"\u0628\u06D2\u062E\u0648\u062F\u06CC": "bekhudi",
|
|
2945
|
+
// ---- commerce, finance and modern technology ----
|
|
2946
|
+
"\u062E\u0631\u06CC\u062F\u0627\u0631\u06CC": "khareedari",
|
|
2947
|
+
"\u0641\u0631\u0648\u062E\u062A": "farokht",
|
|
2948
|
+
"\u0633\u0631\u0645\u0627\u06CC\u06C1": "sarmaya",
|
|
2949
|
+
"\u0642\u0631\u0636\u06C1": "qarza",
|
|
2950
|
+
"\u0628\u06CC\u0646\u06A9\u0627\u0631\u06CC": "bainkari",
|
|
2951
|
+
"\u0642\u0633\u0637": "qist",
|
|
2952
|
+
"\u0627\u062F\u0627\u0626\u06CC\u06AF\u06CC": "adaigi",
|
|
2953
|
+
"\u0622\u0645\u062F\u0646\u06CC": "aamdani",
|
|
2954
|
+
"\u062E\u0631\u0686\u06C1": "kharcha",
|
|
2955
|
+
"\u0628\u0686\u062A": "bachat",
|
|
2956
|
+
"\u0645\u062D\u0635\u0648\u0644": "mahsool",
|
|
2957
|
+
"\u0645\u0627\u0644\u06CC\u062A": "maliyat",
|
|
2958
|
+
"\u06A9\u062A\u0627\u0628\u062A": "kitabat",
|
|
2959
|
+
"\u0645\u0646\u0688\u06CC": "mandi",
|
|
2960
|
+
"\u0646\u06CC\u0644\u0627\u0645\u06CC": "neelami",
|
|
2961
|
+
"\u0628\u0648\u0644\u06CC": "boli",
|
|
2962
|
+
"\u0634\u0631\u0627\u06A9\u062A": "sharakat",
|
|
2963
|
+
"\u062D\u0635\u0635": "hisas",
|
|
2964
|
+
"\u0627\u0633\u0679\u0627\u06A9": "stock",
|
|
2965
|
+
"\u062F\u0648\u0644\u062A": "daulat",
|
|
2966
|
+
"\u062B\u0631\u0648\u062A": "sarwat",
|
|
2967
|
+
"\u063A\u0631\u0628\u062A": "ghurbat",
|
|
2968
|
+
"\u0627\u0641\u0644\u0627\u0633": "iflas",
|
|
2969
|
+
"\u067E\u0631\u0648\u0641\u0627\u0626\u0644": "profile",
|
|
2970
|
+
"\u0633\u06CC\u0679\u0646\u06AF\u0632": "settings",
|
|
2971
|
+
"\u0646\u0648\u0679\u06CC\u0641\u06A9\u06CC\u0634\u0646": "notification",
|
|
2972
|
+
"\u0633\u0627\u0626\u0679": "site",
|
|
2973
|
+
"\u067E\u0648\u0631\u0679\u0644": "portal",
|
|
2974
|
+
// ---- administration, law, governance and politics ----
|
|
2975
|
+
"\u0639\u062F\u0644\u06CC\u06C1": "adliya",
|
|
2976
|
+
"\u0645\u0642\u0646\u0646\u06C1": "muqannana",
|
|
2977
|
+
"\u0627\u0646\u062A\u0638\u0627\u0645\u06CC\u06C1": "intizamia",
|
|
2978
|
+
"\u062D\u06A9\u0645\u0631\u0627\u0646\u06CC": "hukmrani",
|
|
2979
|
+
"\u062C\u0645\u06C1\u0648\u0631\u06CC\u06C1": "jamhooria",
|
|
2980
|
+
"\u0635\u062F\u0627\u0631\u062A": "sadarat",
|
|
2981
|
+
"\u0648\u0632\u0627\u0631\u062A": "wazarat",
|
|
2982
|
+
"\u0633\u0641\u0627\u0631\u062A": "safarat",
|
|
2983
|
+
"\u0642\u0648\u0646\u0635\u0644": "consul",
|
|
2984
|
+
"\u0633\u0641\u0627\u0631\u062A\u062E\u0627\u0646\u06C1": "safaratkhana",
|
|
2985
|
+
"\u0622\u0626\u06CC\u0646\u06CC": "aaeeni",
|
|
2986
|
+
"\u062F\u0633\u062A\u0648\u0631\u06CC": "dastoori",
|
|
2987
|
+
"\u0641\u0648\u062C\u062F\u0627\u0631\u06CC": "faujdari",
|
|
2988
|
+
"\u062F\u06CC\u0648\u0627\u0646\u06CC": "deewani",
|
|
2989
|
+
"\u0645\u0642\u062F\u0645\u06C1": "muqaddama",
|
|
2990
|
+
"\u0633\u0645\u0627\u0639\u062A": "samaat",
|
|
2991
|
+
"\u062F\u0631\u062E\u0648\u0627\u0633\u062A": "darkhwast",
|
|
2992
|
+
"\u0627\u067E\u06CC\u0644": "appeal",
|
|
2993
|
+
"\u0636\u0645\u0627\u0646\u062A": "zamanat",
|
|
2994
|
+
"\u0628\u0631\u06CC\u062A": "bariyat",
|
|
2995
|
+
"\u0639\u0645\u0631\u0642\u06CC\u062F": "umrqaid",
|
|
2996
|
+
"\u067E\u06BE\u0627\u0646\u0633\u06CC": "phansi",
|
|
2997
|
+
"\u0648\u06A9\u0627\u0644\u062A": "wukalat",
|
|
2998
|
+
"\u062D\u0642\u0648\u0642": "huqooq",
|
|
2999
|
+
"\u0641\u0631\u0627\u0626\u0636": "faraiz",
|
|
3000
|
+
"\u0634\u06C1\u0631\u06CC": "shahri",
|
|
3001
|
+
"\u0634\u06C1\u0631\u06CC\u062A": "shahriyat",
|
|
3002
|
+
"\u0634\u0646\u0627\u062E\u062A": "shanakht",
|
|
3003
|
+
"\u0646\u0627\u062F\u0631\u0627": "nadra",
|
|
3004
|
+
"\u0645\u062C\u0644\u0633": "majlis",
|
|
3005
|
+
"\u0634\u0648\u0631\u06CC": "shoora",
|
|
3006
|
+
"\u062D\u0644\u06CC\u0641": "haleef",
|
|
3007
|
+
"\u0645\u062E\u0627\u0644\u0641": "mukhalif",
|
|
3008
|
+
"\u0628\u063A\u0627\u0648\u062A": "baghawat",
|
|
3009
|
+
// ---- geography, nature and terrain ----
|
|
3010
|
+
"\u062E\u0637\u06C1": "khitta",
|
|
3011
|
+
"\u0635\u0648\u0628\u06C1": "sooba",
|
|
3012
|
+
"\u0636\u0644\u0639": "zila",
|
|
3013
|
+
"\u062A\u062D\u0635\u06CC\u0644": "tehsil",
|
|
3014
|
+
"\u06CC\u0648\u0646\u06CC\u0646": "union",
|
|
3015
|
+
"\u06A9\u0648\u0646\u0633\u0644": "council",
|
|
3016
|
+
"\u0642\u0631\u06CC\u06C1": "qarya",
|
|
3017
|
+
"\u0628\u0633\u062A\u06CC": "basti",
|
|
3018
|
+
"\u0634\u06C1\u0631\u0633\u062A\u0627\u0646": "shehristan",
|
|
3019
|
+
"\u0646\u062E\u0644\u0633\u062A\u0627\u0646": "nakhalistan",
|
|
3020
|
+
"\u06A9\u0648\u06C1\u0633\u0627\u0631": "kohsar",
|
|
3021
|
+
"\u06A9\u06C1\u0633\u0627\u0631": "kuhsar",
|
|
3022
|
+
"\u06AF\u06BE\u0627\u0679\u06CC": "ghati",
|
|
3023
|
+
"\u0648\u0627\u062F\u06CC\u0627\u06BA": "wadiyan",
|
|
3024
|
+
"\u06A9\u06BE\u0627\u0626\u06CC": "khaai",
|
|
3025
|
+
"\u062E\u0644\u06CC\u062C": "khaleej",
|
|
3026
|
+
"\u0631\u0627\u0633": "raas",
|
|
3027
|
+
// ---- verbs and verbal inflections ----
|
|
3028
|
+
"\u0645\u0627\u0646\u062A\u06D2": "mante",
|
|
3029
|
+
"\u0645\u0627\u0646\u062A\u06CC": "manti",
|
|
3030
|
+
"\u0645\u0627\u0646\u0648": "mano",
|
|
3031
|
+
"\u0679\u06BE\u06C1\u0631\u0646\u0627": "theharna",
|
|
3032
|
+
"\u0679\u06BE\u06C1\u0631\u0627": "thehra",
|
|
3033
|
+
"\u0679\u06BE\u06C1\u0631\u0648": "thehro",
|
|
3034
|
+
"\u0679\u06BE\u06C1\u0631\u062A\u06D2": "thehrte",
|
|
3035
|
+
"\u0633\u0645\u062C\u06BE\u0627\u0624": "samjhao",
|
|
3036
|
+
"\u067E\u06C1\u0646\u0686\u0627\u0624": "pohonchao",
|
|
3037
|
+
"\u0644\u0679\u0627\u0646\u0627": "lutana",
|
|
3038
|
+
"\u0644\u0679\u0627\u06CC\u0627": "lutaya",
|
|
3039
|
+
"\u0644\u0648\u0679\u0627": "loota",
|
|
3040
|
+
"\u067E\u06A9\u0627\u0631\u0627": "pukara",
|
|
3041
|
+
"\u067E\u06A9\u0627\u0631\u0648": "pukaro",
|
|
3042
|
+
"\u062C\u06BE\u06A9\u0646\u0627": "jhukna",
|
|
3043
|
+
"\u062C\u06BE\u06A9\u0627": "jhuka",
|
|
3044
|
+
"\u062C\u06BE\u06A9\u0627\u0624": "jhukao",
|
|
3045
|
+
"\u062C\u06BE\u06A9\u0627\u0646\u0627": "jhukana",
|
|
3046
|
+
"\u062A\u06BE\u0627\u0645\u0646\u0627": "thamna",
|
|
3047
|
+
"\u062A\u06BE\u0627\u0645\u0627": "thama",
|
|
3048
|
+
"\u062A\u06BE\u0627\u0645\u0648": "thamo",
|
|
3049
|
+
"\u0633\u0646\u0648\u0627\u0631\u0646\u0627": "sanwarna",
|
|
3050
|
+
"\u0633\u0646\u0648\u0627\u0631\u0627": "sanwara",
|
|
3051
|
+
"\u0646\u06A9\u06BE\u0627\u0631\u0646\u0627": "nikharna",
|
|
3052
|
+
"\u0646\u06A9\u06BE\u0627\u0631\u0627": "nikhara",
|
|
3053
|
+
"\u0633\u0646\u0628\u06BE\u0627\u0644\u0646\u0627": "sambhalna",
|
|
3054
|
+
"\u0633\u0646\u0628\u06BE\u0627\u0644\u0627": "sambhala",
|
|
3055
|
+
"\u0633\u0646\u0628\u06BE\u0627\u0644\u0648": "sambhalo",
|
|
3056
|
+
"\u067E\u0686\u06BE\u062A\u0627\u0646\u0627": "pachtana",
|
|
3057
|
+
"\u067E\u0686\u06BE\u062A\u0627\u06CC\u0627": "pachtaya",
|
|
3058
|
+
"\u06AF\u06BE\u0628\u0631\u0627\u0646\u0627": "ghabrana",
|
|
3059
|
+
"\u06AF\u06BE\u0628\u0631\u0627\u06CC\u0627": "ghabraya",
|
|
3060
|
+
"\u0645\u0633\u06A9\u0631\u0627\u0646\u0627": "muskurana",
|
|
3061
|
+
"\u0645\u0633\u06A9\u0631\u0627\u06CC\u0627": "muskuraya",
|
|
3062
|
+
"\u0645\u0633\u06A9\u0631\u0627\u06C1\u0679": "muskurahat",
|
|
3063
|
+
"\u062C\u06BE\u0646\u062C\u06BE\u0644\u0627\u0646\u0627": "jhanjhlana",
|
|
3064
|
+
"\u062A\u0644\u0645\u0644\u0627\u0646\u0627": "tilmilana",
|
|
3065
|
+
"\u0628\u0644\u0628\u0644\u0627\u0646\u0627": "bilbilana",
|
|
3066
|
+
"\u06A9\u06BE\u0644\u06A9\u06BE\u0644\u0627\u0646\u0627": "khilkhilana",
|
|
3067
|
+
"\u06A9\u06BE\u0679\u06A9\u06BE\u0679\u0627\u0646\u0627": "khatkhatana",
|
|
3068
|
+
"\u062C\u06BE\u0644\u0645\u0644\u0627\u0646\u0627": "jhilmilana",
|
|
3069
|
+
"\u0686\u0645\u0686\u0645\u0627\u062A\u0627": "chamchamata",
|
|
3070
|
+
"\u0644\u06C1\u0631\u0627\u0646\u0627": "lehrana",
|
|
3071
|
+
"\u0644\u06C1\u0631\u0627\u06CC\u0627": "lehraya",
|
|
3072
|
+
"\u0644\u06C1\u0631": "lehar"
|
|
2592
3073
|
};
|
|
2593
3074
|
var ROMAN_VARIANTS = {
|
|
2594
3075
|
hay: "\u06C1\u06D2",
|
|
@@ -2776,7 +3257,35 @@ var ROMAN_VARIANTS = {
|
|
|
2776
3257
|
daur: "\u062F\u0648\u0631",
|
|
2777
3258
|
kurta: "\u06A9\u0631\u062A\u0627",
|
|
2778
3259
|
haseen: "\u062D\u0633\u06CC\u0646",
|
|
2779
|
-
malik: "\u0645\u0644\u06A9"
|
|
3260
|
+
malik: "\u0645\u0644\u06A9",
|
|
3261
|
+
kidhr: "\u06A9\u062F\u06BE\u0631",
|
|
3262
|
+
idhr: "\u0627\u062F\u06BE\u0631",
|
|
3263
|
+
jdhr: "\u062C\u062F\u06BE\u0631",
|
|
3264
|
+
thek: "\u0679\u06BE\u06CC\u06A9",
|
|
3265
|
+
thk: "\u0679\u06BE\u06CC\u06A9",
|
|
3266
|
+
sahi: "\u0635\u062D\u06CC\u062D",
|
|
3267
|
+
galat: "\u063A\u0644\u0637",
|
|
3268
|
+
ghalat: "\u063A\u0644\u0637",
|
|
3269
|
+
sb: "\u0633\u0628",
|
|
3270
|
+
hmsha: "\u06C1\u0645\u06CC\u0634\u06C1",
|
|
3271
|
+
kbhi: "\u06A9\u0628\u06BE\u06CC",
|
|
3272
|
+
aksar: "\u0627\u06A9\u062B\u0631",
|
|
3273
|
+
behtareen: "\u0628\u06C1\u062A\u0631\u06CC\u0646",
|
|
3274
|
+
zabardast: "\u0632\u0628\u0631\u062F\u0633\u062A",
|
|
3275
|
+
shandar: "\u0634\u0627\u0646\u062F\u0627\u0631",
|
|
3276
|
+
khoob: "\u062E\u0648\u0628",
|
|
3277
|
+
khub: "\u062E\u0648\u0628",
|
|
3278
|
+
sharam: "\u0634\u0631\u0645",
|
|
3279
|
+
haya: "\u062D\u06CC\u0627",
|
|
3280
|
+
ghairat: "\u063A\u06CC\u0631\u062A",
|
|
3281
|
+
himmat: "\u06C1\u0645\u062A",
|
|
3282
|
+
hosla: "\u062D\u0648\u0635\u0644\u06C1",
|
|
3283
|
+
mashaallah: "\u0645\u0627\u0634\u0627\u0621\u0627\u0644\u0644\u06C1",
|
|
3284
|
+
inshaallah: "\u0627\u0646\u0634\u0627\u0621\u0627\u0644\u0644\u06C1",
|
|
3285
|
+
mashallah: "\u0645\u0627\u0634\u0627\u0621\u0627\u0644\u0644\u06C1",
|
|
3286
|
+
inshallah: "\u0627\u0646\u0634\u0627\u0621\u0627\u0644\u0644\u06C1",
|
|
3287
|
+
alhamdulillah: "\u0627\u0644\u062D\u0645\u062F\u0644\u0644\u06C1",
|
|
3288
|
+
jazakallah: "\u062C\u0632\u0627\u06A9\u200C\u0627\u0644\u0644\u06C1"
|
|
2780
3289
|
};
|
|
2781
3290
|
|
|
2782
3291
|
// src/transliterate.ts
|
|
@@ -2999,20 +3508,24 @@ function urduSlug(input, options = {}) {
|
|
|
2999
3508
|
return slug;
|
|
3000
3509
|
}
|
|
3001
3510
|
|
|
3511
|
+
exports.URDU_STOP_WORDS = URDU_STOP_WORDS;
|
|
3002
3512
|
exports.analyzeUrdu = analyzeUrdu;
|
|
3003
3513
|
exports.compareUrdu = compareUrdu;
|
|
3004
3514
|
exports.convertNumbers = convertNumbers;
|
|
3005
3515
|
exports.countSentences = countSentences;
|
|
3006
3516
|
exports.countWords = countWords;
|
|
3007
3517
|
exports.editDistance = editDistance;
|
|
3518
|
+
exports.filterStopWords = filterStopWords;
|
|
3008
3519
|
exports.foldUrdu = foldUrdu;
|
|
3009
3520
|
exports.hasUrduSpecificLetters = hasUrduSpecificLetters;
|
|
3010
3521
|
exports.highlightUrdu = highlightUrdu;
|
|
3522
|
+
exports.isStopWord = isStopWord;
|
|
3011
3523
|
exports.isUrdu = isUrdu;
|
|
3012
3524
|
exports.normalizeUrdu = normalizeUrdu;
|
|
3013
3525
|
exports.numberToUrduWords = numberToUrduWords;
|
|
3014
3526
|
exports.parseUrduNumber = parseUrduNumber;
|
|
3015
3527
|
exports.removeDiacritics = removeDiacritics;
|
|
3528
|
+
exports.removeStopWords = removeStopWords;
|
|
3016
3529
|
exports.romanToUrdu = romanToUrdu;
|
|
3017
3530
|
exports.romanize = romanize;
|
|
3018
3531
|
exports.searchUrdu = searchUrdu;
|