hebrew-transliteration 2.6.4 → 2.7.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/README.md CHANGED
@@ -10,7 +10,7 @@ A JavaScript package for transliterating Hebrew
10
10
  npm install hebrew-transliteration
11
11
  ```
12
12
 
13
- ### local
13
+ ### from source
14
14
 
15
15
  You will need to have [node installed](https://nodejs.org/en/download/).
16
16
 
@@ -22,409 +22,28 @@ npm install
22
22
  npm run build
23
23
  ```
24
24
 
25
- ## example
25
+ ## quickstart
26
26
 
27
- ```javascript
28
- const heb = require("hebrew-transliteration");
29
- const transliterate = heb.transliterate;
30
- transliterate("אֱלֹהִים");
31
- // ʾĕlōhîm
32
- ```
33
-
34
- ## DOCS
35
-
36
- ### About
37
-
38
- This is a JavaScript package for transliterating Hebrew.
39
-
40
- It exports 3 [functions](#functions):
41
-
42
- 1. [`transliterate()`](#transliterate) — the main function which transliterates Hebrew
43
- 2. [`remove()`](#remove) — removes taamim and optionally removes certain niqqudim
44
- 3. [`sequence()`](#sequence) — sequences Hebrew characters according to the [SBL Hebrew Font Manual](https://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf)
45
-
46
- And it exports 2 [classes](#classes):
47
-
48
- 1. [`Text`](#text) — the [`Text`](https://charlesloder.github.io/havarotjs/classes/text.Text.html) class from the `havarotjs` package
49
- 2. [`Schema`](#schema) — a schema for transliterating Hebrew
50
-
51
- ### Functions
52
-
53
- #### `transliterate()`
54
-
55
- Takes a `string` or [`Text`](#text), and optionally a [`Schema`](#schema) or `Partial<Schema>`
27
+ You can use ESM:
56
28
 
57
29
  ```javascript
58
- heb.transliterate("אֱלֹהִים");
30
+ import { transliterate } from "hebrew-transliteration";
31
+ transliterate("אֱלֹהִים");
59
32
  // ʾĕlōhîm
60
33
  ```
61
34
 
62
- If no [`Schema`](#schema) is passed, then the package defaults to SBL's academic style.
63
-
64
- You can pass in a `Partial<Schema>` that will modify SBL's academic style:
65
-
66
- ```javascript
67
- heb.transliterate("שָׁלוֹם", { SHIN: "sh" });
68
- // shālôm
69
- ```
70
-
71
- There are premade schemas as well.
72
-
73
- ```javascript
74
- const brillAcademic = require("hebrew-transliteration/schemas").brillAcademic;
75
-
76
- heb.transliterate("בְּבֵית", brillAcademic)
77
- // bᵉḇêṯ
78
- ```
79
- **Note**: schemas are not endorsed by publishers.
80
-
81
- If you need a fully customized transliteration, it is best to use the [`Schema`](#schema) constructor:
82
-
83
- ```javascript
84
- const schema = new heb.Schema({
85
- ALEF: "'",
86
- BET: "B",
87
- ...
88
- QAMETS: "A",
89
- ...
90
- }) // truncated for brevity
91
-
92
- heb.transliterate("אָ֣ב", schema)
93
- // 'AB
94
- ```
95
-
96
- ---
97
-
98
- #### `remove()`
99
-
100
- Takes `string` and `RemoveOptions`.
101
-
102
- The default removes accents (i.e. characters called HEBREW ACCENT) and metheg and rafe.
103
-
104
- ```javascript
105
- heb.remove("שָׂרַ֣י אִשְׁתְּךָ֔");
106
- // שָׂרַי אִשְׁתְּךָ;
107
- ```
108
-
109
- The `RemoveOptions` can be customized.
110
-
111
- ```javascript
112
- heb.remove("שָׂרַ֣י אִשְׁתְּךָ֔", { SHIN_DOT: true, SIN_DOT: true });
113
- // שָרַ֣י אִשְתְּךָ֔
114
- ```
115
-
116
- **Note:** unlike a `Schema` where a `Partial<Schema>` extends the default, `RemoveOptions` does not accept a `Partial<RemoveOptions>`.
117
-
118
- All properties for `RemoveOptions` can be found in the [source](src/remove.ts).
119
-
120
- There are some preset options availables as well.
121
-
122
- ```javascript
123
- const opts = require("hebrew-transliteration/removeOptions");
124
- heb.remove("שָׂרַ֣י אִשְׁתְּךָ֔", opts.all);
125
- // שרי אשתך, וימצאו
126
- ```
127
-
128
- ---
129
-
130
- #### `sequence()`
131
-
132
- Takes a `string`. Returns a string of properly sequenced characters according to the [SBL Hebrew Font manual](https://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf) following the pattern of: consonant - dagesh - vowel - ta'am
133
-
134
- ```javascript
135
- heb.sequence("\u{5D1}\u{5B0}\u{5BC}\u{5E8}\u{5B5}\u{5D0}\u{5E9}\u{5B4}\u{5C1}\u{596}\u{5D9}\u{5EA}");
136
- // "\u{5D1}\u{5BC}\u{5B0}\u{5E8}\u{5B5}\u{5D0}\u{5E9}\u{5C1}\u{5B4}\u{596}\u{5D9}\u{5EA}"
137
- ```
138
-
139
- ### Classes
140
-
141
- #### Text
142
-
143
- The [`Text`](https://charlesloder.github.io/havarotjs/classes/text.Text.html) class from the [`havarotjs`](https://www.npmjs.com/package/havarotjs) package.
144
-
145
- This class is used by [`transliterate()`](#transliterate) internally to syllabify Hebrew text, but it is exposed as well.
35
+ Or CommonJS:
146
36
 
147
37
  ```javascript
148
- const text = new heb.Text("הֲבָרֹות");
149
- text.syllables;
150
- // [
151
- // Syllable { original: "הֲ" },
152
- // Syllable { original: "בָ" },
153
- // Syllable { original: "רֹות" }
154
- // ]
155
- ```
156
-
157
- If a `Text` is passed into [`transliterate()`](#transliterate) instead of a `string`, then the syllabification from the `Text` class is used.
158
- If a `string` is passed in, then syllabification come from the options passed into the [`Schema`](#schema).
159
- See more under [syllabification](#syllabification).
160
-
161
- #### Schema
162
-
163
- A `Schema` is used to define a schema for transliteration. See the [`Schema` source](src/schema.ts) for all available properties.
164
-
165
- The `Schema` can be divided into a few categories.
166
-
167
- ##### 1) Syllabification
168
-
169
- The options used for syllabifying Hebrew text can be found [here](https://charlesloder.github.io/havarotjs/interfaces/text.SylOpts.html)
170
-
171
- ###### Differences between `Text` and `Schema`
172
-
173
- There are 5 options for syllabification that are the [same as the ones used by the `Text`](https://charlesloder.github.io/havarotjs/interfaces/text.SylOpts.html) class.
174
-
175
- Read more about the syllabification options for the [`Text`](https://charlesloder.github.io/havarotjs/interfaces/text.SylOpts.html) and a [higher level overview](https://charlesloder.github.io/havarotjs/pages/Linguistic/syllabification.html)
176
-
177
- ###### Precedence of `Text` over `Schema`
178
-
179
- The syllabification options set by `Schema` are used if a `string` is passed into [`transliterate()`](#transliterate). If a `Text` is passed into [`transliterate()`](#transliterate) instead of a `string`, then the syllabification from the `Text` class is used:
180
-
181
- ```javascript
182
- // using default
183
- heb.transliterate("חָכְמָ֣ה"); // ḥokmâ
184
-
185
- // using Schema for syllabification
186
- heb.transliterate("חָכְמָ֣ה", { qametsQatan: false }); // ḥākǝmâ
187
-
188
- // using Text for syllabification
189
- heb.transliterate(new heb.Text("חָכְמָ֣ה", { qametsQatan: false })); // ḥākǝmâ
190
-
191
- // using Schema and Text — Text takes precedence
192
- heb.transliterate(new heb.Text("חָכְמָ֣ה", { qametsQatan: true }), { qametsQatan: false }); // ḥokmâ
193
- ```
194
-
195
- **Note**: `qametsQatan` only converts a regular _qamets_ character; if a [_qamets qatan_ character](https://www.compart.com/en/unicode/U+05C7) is used, it will always be a _qamets qatan_.
196
-
197
- ##### 2) Characters
198
-
199
- Most `Schema` properties are for defining single Hebrew characters:
200
-
201
- ```javascript
202
- heb.transliterate("אָ", { ALEF: "@", QAMETS: "A" });
203
- // @A
204
- ```
205
-
206
- ##### 3) Orthographic Features
207
-
208
- Some properties are for defining common Hebrew orthographies for:
209
-
210
- ###### _BeGaDKePhaT_
211
-
212
- There are properties for the digraphs of _BeGaDKePhaT_ letters:
213
-
214
- - `BET_DAGESH`
215
- - `GIMEL_DAGESH`
216
- - `DALET_DAGESH`
217
- - `KAF_DAGESH`
218
- - `PE_DAGESH`
219
- - `TAV_DAGESH`
220
-
221
- Each one is the consonant character followed by the _dagesh_ character (U+05BC).
222
-
223
- These are helpful for distinguishing between spirantized forms.
224
-
225
- ```javascript
226
- heb.transliterate("בְּבֵית", { BET: "b" });
227
- // bǝbêt
228
-
229
- heb.transliterate("בְּבֵית", { BET: "v", BET_DAGESH: "b" });
230
- // bǝvêt
231
- ```
232
-
233
- ###### Matres Lectionis
234
-
235
- The following properties are for _matres lectionis_:
236
-
237
- - `HIRIQ_YOD`
238
- - `TSERE_YOD`
239
- - `SEGOL_YOD`
240
- - `SHUREQ`
241
- - `HOLAM_VAV`
242
- - `QAMATS_HE`
243
- - `SEGOL_HE`
244
- - `TSERE_HE`
245
-
246
- ```javascript
247
- heb.transliterate("פֶּה", { SEGOL_HE: "é" });
248
- // pé
249
- ```
250
-
251
- ###### Others
252
-
253
- There are other orthographic features:
254
-
255
- - `MS_SUFX` — HEBREW LETTER QAMATS (U+05B8) and YOD (U+05D9) and VAV (U+05D5) יו◌ָ
256
- - `DIVINE_NAME` — the full form of the divine name - יהוה
257
- - `DIVINE_NAME_ELOHIM` — optionally, the form of the divine name pointed as ʾelōhîm (e.g. יֱהֹוִה)
258
- - `SYLLABLE_SEPARATOR` — a syllable separator, usually an empty string
259
- - `DAGESH_CHAZAQ` — if true, repeats the consonant with the _dagesh_, or can take a string
260
-
261
- ```javascript
262
- heb.transliterate("שַׁבָּת", { DAGESH_CHAZAQ: true });
263
- // šabbāt
264
-
265
- heb.transliterate("שַׁבָּת", { DAGESH_CHAZAQ: false });
266
- // šabāt
267
-
268
- heb.transliterate("שַׁבָּת", { DAGESH_CHAZAQ: "\u0301" });
269
- // šab́āt
270
-
271
- heb.transliterate("הָאָֽרֶץ", { SYLLABLE_SEPARATOR: "-" });
272
- // hā-ʾā-reṣ
273
- ```
274
-
275
- ##### 4) Others
276
-
277
- ###### Additional Features
278
-
279
- The `ADDITIONAL_FEATURES` property is for defining non-typical Hebrew orthography, example:
280
-
281
- ```javascript
282
- heb.transliterate("הַזֹּאת", {
283
- ADDITIONAL_FEATURES: [
284
- {
285
- FEATURE: "cluster",
286
- HEBREW: "זּ",
287
- TRANSLITERATION: "tz"
288
- }
289
- ]
290
- });
291
- // hatzōʾt
292
- ```
293
-
294
- - The orthography `זּ` is most often a doubling of the `ZAYIN` (i.e. `'z'` with no _dagesh_, and `'zz'` with a _dagesh chazaq_)
295
- - In the Romaniote reading tradition, however, the `ZAYIN` is usually transliterated with `'z'` (really `'ζ'`),
296
- - but a `ZAYIN` followed by a _dagesh_ is transliterated as `'tz'` (really `'τζ'`)
297
-
298
- Each additional feature consists of 4 properties:
299
-
300
- 1. `FEATURE` — has three options:
301
- - `"cluster"` — a `cluster` is any combination of a single character and optionally a *dagesh* and vowel.
302
- - `"syllable"` — a `syllable` is any combination of a multiple characters and a single vowel and optionally a *dagesh*
303
- - `"word"` — covers everything else
304
- 2. `HEBREW` — the Hebrew text to be transliterated
305
- 3. `TRANSLITERATION` — the text used to transliterate the Hebrew text, or a callback function
306
- 4. `PASS_THROUGH` — if `true` passes the characters of the result of the `TRANSLITERATION` callback to the be mapped to the schema. If `TRANSLITERATION` is a string, this does nothing. Default `true`.
307
-
308
- **Using a callback**
309
-
310
- A callback can be used `TRANSLITERATION` instead of just a string.
311
-
312
- ```js
313
38
  const heb = require("hebrew-transliteration");
314
- const rules = require("hebrew-transliteration/dist/rules");
315
-
316
- // use a callback to transliterate a vocal sheva with the same character as the next syllable
317
- heb.transliterate("בְּרֵאשִׁ֖ית וַיַּבְדֵּל", {
318
- ADDITIONAL_FEATURES: [
319
- {
320
- // matches any sheva in a syllable that is NOT preceded by a vowel character
321
- HEBREW: "(?<![\u{05B1}-\u{05BB}\u{05C7}].*)\u{05B0}",
322
- FEATURE: "syllable",
323
- TRANSLITERATION: function (syllable, _hebrew, schema) {
324
- const next = syllable.next;
325
- // ensure type safety
326
- const nextVowel = next.vowelName === "SHEVA" ? "VOCAL_SHEVA" : next.vowelName;
327
-
328
- if (next && nextVowel) {
329
- const vowel = schema[nextVowel] || "";
330
- return syllable.text.replace(new RegExp("\u{05B0}", "u"), vowel);
331
- }
332
-
333
- return syllable.text;
334
- }
335
- }
336
- ]
337
- });
338
-
339
- // bērēʾšît wayyabdēl
340
- ```
341
-
342
-
343
- :warning: this is an experimental `ADDTIONAL_FEATURES`; results may not always meet expectations.
344
-
345
- ###### Stress Marker
346
-
347
- The `STRESS_MARKER` property is an optional property to indicate stress in transliteration.
348
-
349
- It's properties are:
350
- - location
351
- - mark
352
- - exclude (optional)
353
-
354
- **Example**
355
- ```javascript
356
- heb.transliterate("מֶ֣לֶךְ", { STRESS_MARKER: { location: "after-vowel", mark: "\u0301" } });
357
- // mélek
358
- ```
359
-
360
- _mark_
361
-
362
- The string used to mark stress (e.g. [a combining acute accent (U+0301)](https://www.compart.com/en/unicode/U+0301) )
363
-
364
- _location_
365
-
366
- The `location` has four options:
367
-
368
- - `"before-syllable"`
369
- - `"after-syllable"`
370
- - `"before-vowel"`
371
- - `"after-vowel"`
372
-
373
- A combining mark (e.g. `"\u0301"`) placed `"after-vowel"` will print on top of the vowel, and placed after a digraph will print on the second vowel.
374
-
375
- ```javascript
376
- heb.transliterate("בֵּ֣ית", {
377
- TSERE_YOD: "ei",
378
- STRESS_MARKER: { location: "after-vowel", mark: "\u0301" }
379
- });
380
- // beít
39
+ const transliterate = heb.transliterate;
40
+ transliterate("אֱלֹהִים");
41
+ // ʾĕlōhîm
381
42
  ```
382
43
 
383
- _exclude_
384
-
385
- An optional property determining whether to exclude the mark on certain syllables.
386
-
387
- It has three options
388
- - `undefined`/`"never"`
389
- - `"single"`
390
- - `"final"`
391
-
392
- Examples:
393
-
394
- ```js
395
- // undefined and "never" are the same
396
- heb.transliterate("בֹּ֖קֶר י֥וֹם אֶחָֽד׃ ", {
397
- STRESS_MARKER: {
398
- location: "after-vowel",
399
- mark: "\u0301",
400
- }
401
- });
402
-
403
- // bṓqer yốm ʾeḥā́d
404
-
405
- // exclude only single syllable words
406
- heb.transliterate("בֹּ֖קֶר י֥וֹם אֶחָֽד׃ ", {
407
- STRESS_MARKER: {
408
- location: "after-vowel",
409
- mark: "\u0301",
410
- exclude: "single"
411
- }
412
- });
413
-
414
- // bṓqer yôm ʾeḥā́d
415
-
416
- // exclude when accent is on the final syllable
417
- // implicitly excludes single syllable words
418
- heb.transliterate("בֹּ֖קֶר י֥וֹם אֶחָֽד׃ ", {
419
- STRESS_MARKER: {
420
- location: "after-vowel",
421
- mark: "\u0301",
422
- exclude: "single"
423
- }
424
- });
44
+ ## DOCS
425
45
 
426
- // bṓqer yôm ʾeḥād
427
- ```
46
+ View the docs online at https://charlesloder.github.io/hebrew-transliteration/getting-started/quick-start
428
47
 
429
48
  ## Live
430
49
 
@@ -432,4 +51,4 @@ Use it live at [https://hebrewtransliteration.app](https://hebrewtransliteration
432
51
 
433
52
  ## Contributing
434
53
 
435
- See [contributing](./CONTRIBUTING.md)
54
+ See [contributing](./CONTRIBUTING.md)
package/dist/cjs/index.js CHANGED
@@ -17,6 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
18
  var esm_exports = {};
19
19
  __export(esm_exports, {
20
+ SBL: () => import_schema.SBL,
20
21
  Schema: () => import_schema.Schema,
21
22
  Text: () => import_havarotjs.Text,
22
23
  remove: () => import_remove.remove,
@@ -25,12 +26,13 @@ __export(esm_exports, {
25
26
  });
26
27
  module.exports = __toCommonJS(esm_exports);
27
28
  var import_havarotjs = require("havarotjs");
28
- var import_transliterate = require("./transliterate.js");
29
- var import_sequence = require("./sequence.js");
30
29
  var import_remove = require("./remove.js");
31
30
  var import_schema = require("./schema.js");
31
+ var import_sequence = require("./sequence.js");
32
+ var import_transliterate = require("./transliterate.js");
32
33
  // Annotate the CommonJS export names for ESM import in node:
33
34
  0 && (module.exports = {
35
+ SBL,
34
36
  Schema,
35
37
  Text,
36
38
  remove,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["import { Text } from \"havarotjs\";\nimport { transliterate } from \"./transliterate\";\nimport { sequence } from \"./sequence\";\nimport { remove } from \"./remove\";\nimport { Schema } from \"./schema\";\n\n/**\n * I accidentally published a canary version without a tag, making it \"latest\".\n * Just adding this comment and creating a new version to make it latest\n */\n\nexport { remove, Schema, sequence, Text, transliterate };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;uBAAqB;AACrB,2BAA8B;AAC9B,sBAAyB;AACzB,oBAAuB;AACvB,oBAAuB;",
4
+ "sourcesContent": ["import { Text } from \"havarotjs\";\nimport { remove, RemoveOptions } from \"./remove\";\nimport {\n ClusterCallback,\n ClusterFeature,\n HebrewFeature,\n PassThrough,\n SBL,\n Schema,\n SyllableCallback,\n SyllableFeature,\n SylOpts,\n WordCallback,\n WordFeature\n} from \"./schema\";\nimport { sequence } from \"./sequence\";\nimport { transliterate } from \"./transliterate\";\n\nexport { remove, SBL, Schema, sequence, Text, transliterate };\nexport type {\n ClusterCallback,\n ClusterFeature,\n HebrewFeature,\n PassThrough,\n RemoveOptions,\n SyllableCallback,\n SyllableFeature,\n SylOpts,\n WordCallback,\n WordFeature\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;uBAAqB;AACrB,oBAAsC;AACtC,oBAYO;AACP,sBAAyB;AACzB,2BAA8B;",
6
6
  "names": []
7
7
  }
@@ -177,7 +177,8 @@ const remove = (text, options = { ...accents, METEG: true, RAFE: true }) => {
177
177
  var _a;
178
178
  const key = (_a = removeMap[c]) != null ? _a : null;
179
179
  if (key) {
180
- return a.replace(new RegExp(key, "gu"), "");
180
+ const replacement = key === "\u05BE" ? " " : "";
181
+ return a.replace(new RegExp(key, "gu"), replacement);
181
182
  }
182
183
  return a;
183
184
  }, sequenced);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/remove.ts"],
4
- "sourcesContent": ["import { sequence } from \"./sequence\";\n\ninterface RemoveOptions {\n // accents //\n /**\n * \u25CC\u0591\n */\n ETNAHTA?: boolean;\n /**\n * \u25CC\u0592\n */\n SEGOLTA?: boolean;\n /**\n * \u25CC\u0593\n */\n SHALSHELET?: boolean;\n /**\n * \u25CC\u0594\n */\n ZAQEF_QATAN?: boolean;\n /**\n * \u25CC\u0595\n */\n ZAQEF_GADOL?: boolean;\n /**\n * \u25CC\u0596\n */\n TIPEHA?: boolean;\n /**\n * \u25CC\u0597\n */\n REVIA?: boolean;\n /**\n * \u25CC\u0598\n */\n ZARQA?: boolean;\n /**\n * \u25CC\u0599\n */\n PASHTA?: boolean;\n /**\n * \u25CC\u059A\n */\n YETIV?: boolean;\n /**\n * \u25CC\u059B\n */\n TEVIR?: boolean;\n /**\n * \u25CC\u059C\n */\n GERESH?: boolean;\n /**\n * \u25CC\u059D\n */\n GERESH_MUQDAM?: boolean;\n /**\n * \u25CC\u059E\n */\n GERSHAYIM?: boolean;\n /**\n * \u25CC\u059F\n */\n QARNEY_PARA?: boolean;\n /**\n * \u25CC\u05A0\n */\n TELISHA_GEDOLA?: boolean;\n /**\n * \u25CC\u05A1\n */\n PAZER?: boolean;\n /**\n * \u25CC\u05A2\n */\n ATNAH_HAFUKH?: boolean;\n /**\n * \u25CC\u05A3\n */\n MUNAH?: boolean;\n /**\n * \u25CC\u05A4\n */\n MAHAPAKH?: boolean;\n /**\n * \u25CC\u05A5\n */\n MERKHA?: boolean;\n /**\n * \u25CC\u05A6\n */\n MERKHA_KEFULA?: boolean;\n /**\n * \u25CC\u05A7\n */\n DARGA?: boolean;\n /**\n * \u25CC\u05A8\n */\n QADMA?: boolean;\n /**\n * \u25CC\u05A9\n */\n TELISHA_QETANA?: boolean;\n /**\n * \u25CC\u05AA\n */\n YERAH_BEN_YOMO?: boolean;\n /**\n * \u25CC\u05AB\n */\n OLE?: boolean;\n /**\n * \u25CC\u05AC\n */\n ILUY?: boolean;\n /**\n * \u25CC\u05AD\n */\n DEHI?: boolean;\n /**\n * \u25CC\u05AE\n */\n ZINOR?: boolean;\n // points //\n /**\n * \u25CC\u05B0\n */\n SHEVA?: boolean;\n /**\n * \u25CC\u05B1\n */\n HATAF_SEGOL?: boolean;\n /**\n * \u25CC\u05B2\n */\n HATAF_PATAH?: boolean;\n /**\n * \u25CC\u05B3\n */\n HATAF_QAMATS?: boolean;\n /**\n * \u25CC\u05B4\n */\n HIRIQ?: boolean;\n /**\n * \u25CC\u05B5\n */\n TSERE?: boolean;\n /**\n * \u25CC\u05B6\n */\n SEGOL?: boolean;\n /**\n * \u25CC\u05B7\n */\n PATAH?: boolean;\n /**\n * \u25CC\u05B8\n */\n QAMATS?: boolean;\n /**\n * \u25CC\u05B9\n */\n HOLAM?: boolean;\n /**\n * \u25CC\u05BB\n */\n QUBUTS?: boolean;\n /**\n * \u25CC\u05BC\n */\n DAGESH?: boolean;\n /**\n * \u25CC\u05BD\n */\n METEG?: boolean;\n /**\n * \u25CC\u05BF\n */\n RAFE?: boolean;\n /**\n * \u25CC\u05C1\n */\n SHIN_DOT?: boolean;\n /**\n * \u25CC\u05C2\n */\n SIN_DOT?: boolean;\n /**\n * \u25CC\u05C7\n */\n QAMATS_QATAN?: boolean;\n // punctuation //\n /**\n * \u05BE\u25CC\n */\n MAQAF?: boolean;\n /**\n * \u05C0 \u25CC\n */\n PASEQ?: boolean;\n /**\n * \u05C3\u25CC\n */\n SOF_PASUQ?: boolean;\n /**\n * \u05C6\n */\n NUN_HAFUKHA?: boolean;\n /**\n * \u05F3\n */\n PUNC_GERESH?: boolean;\n /**\n * \u05F4\n */\n PUNC_GERSHAYIM?: boolean;\n // marks //\n /**\n * \u25CC\u05AF\n */\n MASORA_CIRCLE?: boolean;\n /**\n * \u25CC\u05C4\n */\n UPPER_DOT?: boolean;\n /**\n * \u25CC\u05C5\n */\n LOWER_DOT?: boolean;\n}\n\ntype OptionKey = keyof RemoveOptions;\n\ntype map = { [k in keyof RemoveOptions]: string };\n\nconst removeMap: map = {\n // accents //\n ETNAHTA: \"\\u{0591}\", // U+0591 HEBREW ACCENT ETNAHTA\n SEGOLTA: \"\\u{0592}\", // U+0592 HEBREW ACCENT SEGOL\n SHALSHELET: \"\\u{0593}\", // U+0593 HEBREW ACCENT SHALSHELET\n ZAQEF_QATAN: \"\\u{0594}\", // U+0594 HEBREW ACCENT ZAQEF QATAN\n ZAQEF_GADOL: \"\\u{0595}\", // U+0595 HEBREW ACCENT ZAQEF GADOL\n TIPEHA: \"\\u{0596}\", // U+0596 HEBREW ACCENT TIPEHA\n REVIA: \"\\u{0597}\", // U+0597 HEBREW ACCENT REVIA\n ZARQA: \"\\u{0598}\", // U+0598 HEBREW ACCENT ZARQA\n PASHTA: \"\\u{0599}\", // U+0599 HEBREW ACCENT PASHTA\n YETIV: \"\\u{059A}\", // U+059A HEBREW ACCENT YETIV\n TEVIR: \"\\u{059B}\", // U+059B HEBREW ACCENT TEVIR\n GERESH: \"\\u{059C}\", // U+059C HEBREW ACCENT GERESH\n GERESH_MUQDAM: \"\\u{059D}\", // U+059D HEBREW ACCENT GERESH MUQDAM\n GERSHAYIM: \"\\u{059E}\", // U+059E HEBREW ACCENT GERSHAYIM\n QARNEY_PARA: \"\\u{059F}\", // U+059F HEBREW ACCENT QARNEY PARA\n TELISHA_GEDOLA: \"\\u{05A0}\", // U+05A0 HEBREW ACCENT TELISHA GEDOLA\n PAZER: \"\\u{05A1}\", // U+05A1 HEBREW ACCENT PAZER\n ATNAH_HAFUKH: \"\\u{05A2}\", // U+05A2 HEBREW ACCENT ATNAH HAFUKH\n MUNAH: \"\\u{05A3}\", // U+05A3 HEBREW ACCENT MUNAH\n MAHAPAKH: \"\\u{05A4}\", // U+05A4 HEBREW ACCENT MAHAPAKH\n MERKHA: \"\\u{05A5}\", // U+05A5 HEBREW ACCENT MERKHA\n MERKHA_KEFULA: \"\\u{05A6}\", // U+05A6 HEBREW ACCENT MERKHA KEFULA\n DARGA: \"\\u{05A7}\", // U+05A7 HEBREW ACCENT DARGA\n QADMA: \"\\u{05A8}\", // U+05A8 HEBREW ACCENT QADMA\n TELISHA_QETANA: \"\\u{05A9}\", // U+05A9 HEBREW ACCENT TELISHA QETANA\n YERAH_BEN_YOMO: \"\\u{05AA}\", // U+05AA HEBREW ACCENT YERAH BEN YOMO\n OLE: \"\\u{05AB}\", // U+05AB HEBREW ACCENT OLE\n ILUY: \"\\u{05AC}\", // U+05AC HEBREW ACCENT ILUY\n DEHI: \"\\u{05AD}\", // U+05AD HEBREW ACCENT DEHI\n ZINOR: \"\\u{05AE}\", // U+05AE HEBREW ACCENT ZINOR\n // points //\n SHEVA: \"\\u{05B0}\", // HEBREW POINT SHEVA\n HATAF_SEGOL: \"\\u{05B1}\", // HEBREW POINT HATAF SEGOL\n HATAF_PATAH: \"\\u{05B2}\", // HEBREW POINT HATAF PATAH\n HATAF_QAMATS: \"\\u{05B3}\", // HEBREW POINT HATAF QAMATS\n HIRIQ: \"\\u{05B4}\", // HEBREW POINT HIRIQ\n TSERE: \"\\u{05B5}\", // HEBREW POINT TSERE\n SEGOL: \"\\u{05B6}\", // HEBREW POINT SEGOL\n PATAH: \"\\u{05B7}\", // HEBREW POINT PATAH\n QAMATS: \"\\u{05B8}\", // HEBREW POINT QAMATS\n HOLAM: \"\\u{05B9}\", // HEBREW POINT HOLAM\n // below is not needed because sequnce() does not output this\n // HOLAM_HASER_FOR_VAV: \"\\u{05BA}\", // HEBREW POINT HOLAM HASER FOR VAV\n QUBUTS: \"\\u{05BB}\", // HEBREW POINT QUBUTS\n DAGESH: \"\\u{05BC}\", // HEBREW POINT DAGESH OR MAPIQ\n METEG: \"\\u{05BD}\", // HEBREW POINT METEG\n RAFE: \"\\u{05BF}\", // HEBREW POINT RAFE\n SHIN_DOT: \"\\u{05C1}\", // HEBREW POINT SHIN DOT\n SIN_DOT: \"\\u{05C2}\", // HEBREW POINT SIN DOT\n QAMATS_QATAN: \"\\u{05C7}\", // HEBREW POINT QAMATS QATAN\n MAQAF: \"\\u{05BE}\", // HEBREW PUNCTUATION MAQAF\n PASEQ: \"\\u{05C0}\", // HEBREW PUNCTUATION PASEQ\n SOF_PASUQ: \"\\u{05C3}\", // HEBREW PUNCTUATION SOF_PASUQ\n NUN_HAFUKHA: \"\\u{05C6}\", // HEBREW PUNCTUATION NUN_HAFUKHA\n // the punctuation geresh/gereshayim is different then the accent ones\n PUNC_GERESH: \"\\u{05F3}\", // HEBREW PUNCTUATION GERESH\n PUNC_GERSHAYIM: \"\\u{05F4}\", // HEBREW PUNCTUATION GERSHAYIM\n MASORA_CIRCLE: \"\\u{05AF}\", // U+MASORA CIRCLE HEBREW MARK 05AF,\n UPPER_DOT: \"\\u{05C4}\", // U+UPPER DOT HEBREW MARK 05C4,\n LOWER_DOT: \"\\u{05C5}\" // U+LOWER DOT HEBREW MARK 05C5];\n};\n\n/**\n * removes all chars called HEBREW ACCENT (U+0591-05AF)\n */\nexport const accents: RemoveOptions = {\n ETNAHTA: true,\n SEGOLTA: true,\n SHALSHELET: true,\n ZAQEF_QATAN: true,\n ZAQEF_GADOL: true,\n TIPEHA: true,\n REVIA: true,\n ZARQA: true,\n PASHTA: true,\n YETIV: true,\n TEVIR: true,\n GERESH: true,\n GERESH_MUQDAM: true,\n GERSHAYIM: true,\n QARNEY_PARA: true,\n TELISHA_GEDOLA: true,\n PAZER: true,\n ATNAH_HAFUKH: true,\n MUNAH: true,\n MAHAPAKH: true,\n MERKHA: true,\n MERKHA_KEFULA: true,\n DARGA: true,\n QADMA: true,\n TELISHA_QETANA: true,\n YERAH_BEN_YOMO: true,\n OLE: true,\n ILUY: true,\n DEHI: true,\n ZINOR: true\n};\n\n/**\n * removes all chars called HEBREW POINT (U+05B0-05BD, U+05BF, U+05C1-05C2 and U+05C7)\n */\nexport const points: RemoveOptions = {\n SHEVA: true,\n HATAF_SEGOL: true,\n HATAF_PATAH: true,\n HATAF_QAMATS: true,\n HIRIQ: true,\n TSERE: true,\n SEGOL: true,\n PATAH: true,\n QAMATS: true,\n HOLAM: true,\n QUBUTS: true,\n DAGESH: true,\n SHIN_DOT: true,\n SIN_DOT: true,\n METEG: true,\n RAFE: true,\n QAMATS_QATAN: true\n};\n\n/**\n * removes chars called HEBREW POINT (U+05B0-05BC and U+05C7) except for:\n * - SHIN_DOT\n * - SIN_DOT\n * - METEG\n * - RAFE\n */\nexport const vowels: RemoveOptions = {\n SHEVA: true,\n HATAF_SEGOL: true,\n HATAF_PATAH: true,\n HATAF_QAMATS: true,\n HIRIQ: true,\n TSERE: true,\n SEGOL: true,\n PATAH: true,\n QAMATS: true,\n HOLAM: true,\n QUBUTS: true,\n DAGESH: true,\n QAMATS_QATAN: true\n};\n\n/**\n * removes all chars called HEBREW PUNCTUATION (U+05BE, U+05C0, U+05C3, and U+05C6)\n */\nexport const punctuation: RemoveOptions = {\n MAQAF: true,\n PASEQ: true,\n SOF_PASUQ: true,\n NUN_HAFUKHA: true,\n PUNC_GERESH: true,\n PUNC_GERSHAYIM: true\n};\n\n/**\n * removes all chars called HEBREW MARK (U+05AF, U+05C4, and U+05C5)\n */\nexport const marks: RemoveOptions = {\n MASORA_CIRCLE: true,\n UPPER_DOT: true,\n LOWER_DOT: true\n};\n\nexport const all: RemoveOptions = {\n ...accents,\n ...points,\n ...punctuation,\n ...marks\n};\n\n/**\n * removes niqqud from Hebrew text\n *\n * @param text - a string of Hebrew characters\n * @param options\n * @returns Hebrew characters with accents and niqqud optionally removed\n *\n * @example Default\n *\n * ```ts\n * // by default removes all accents and metheg and rafe\n * remove(\"\u05E9\u05C2\u05B8\u05E8\u05B7\u05A3\u05D9 \u05D0\u05B4\u05E9\u05C1\u05B0\u05EA\u05BC\u05B0\u05DA\u05B8\u0594, \u05D5\u05B7\u05BD\u05D9\u05B4\u05BC\u05DE\u05B0\u05E6\u05B0\u05D0\u0597\u05D5\u05BC\");\n * // \u05E9\u05C2\u05B8\u05E8\u05B7\u05D9 \u05D0\u05B4\u05E9\u05C1\u05B0\u05EA\u05BC\u05B0\u05DA\u05B8, \u05D5\u05B7\u05D9\u05B4\u05BC\u05DE\u05B0\u05E6\u05B0\u05D0\u05D5\u05BC\n * ```\n *\n * @example Remove accents and vowels, but not shin/sin dots\n *\n * ```ts\n * import { accents, vowelsl } from \"hebrew-transliteration/removeOptions\";\n *\n * remove(\"\u05E9\u05C2\u05B8\u05E8\u05B7\u05A3\u05D9 \u05D0\u05B4\u05E9\u05C1\u05B0\u05EA\u05BC\u05B0\u05DA\u05B8\u0594, \u05D5\u05B7\u05BD\u05D9\u05B4\u05BC\u05DE\u05B0\u05E6\u05B0\u05D0\u0597\u05D5\u05BC\", { ...accents, ...vowels, METEG: true });\n * // \u05E9\u05C2\u05E8\u05D9 \u05D0\u05E9\u05C1\u05EA\u05DA, \u05D5\u05D9\u05DE\u05E6\u05D0\u05D5\n * ```\n *\n * @example Remove all\n *\n * ```ts\n * import { all } from \"hebrew-transliteration/removeOptions\";\n *\n * remove(\"\u05E9\u05C2\u05B8\u05E8\u05B7\u05A3\u05D9 \u05D0\u05B4\u05E9\u05C1\u05B0\u05EA\u05BC\u05B0\u05DA\u05B8\u0594, \u05D5\u05B7\u05BD\u05D9\u05B4\u05BC\u05DE\u05B0\u05E6\u05B0\u05D0\u0597\u05D5\u05BC\", all);\n * // \u05E9\u05E8\u05D9 \u05D0\u05E9\u05EA\u05DA, \u05D5\u05D9\u05DE\u05E6\u05D0\u05D5\n * ```\n */\nexport const remove = (text: string, options: RemoveOptions = { ...accents, METEG: true, RAFE: true }): string => {\n /** all the keys of options that are to be removed */\n const keys = Object.keys(options).filter((k) => (k in options ? options[k as OptionKey] : false));\n const sequenced = sequence(text);\n return keys.reduce((a, c) => {\n const key = removeMap[c as OptionKey] ?? null;\n if (key) {\n return a.replace(new RegExp(key, \"gu\"), \"\");\n }\n return a;\n }, sequenced);\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;sBAAyB;AA6OzB,MAAM,YAAiB;EAErB,SAAS;EACT,SAAS;EACT,YAAY;EACZ,aAAa;EACb,aAAa;EACb,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,eAAe;EACf,WAAW;EACX,aAAa;EACb,gBAAgB;EAChB,OAAO;EACP,cAAc;EACd,OAAO;EACP,UAAU;EACV,QAAQ;EACR,eAAe;EACf,OAAO;EACP,OAAO;EACP,gBAAgB;EAChB,gBAAgB;EAChB,KAAK;EACL,MAAM;EACN,MAAM;EACN,OAAO;EAEP,OAAO;EACP,aAAa;EACb,aAAa;EACb,cAAc;EACd,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EAGP,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,MAAM;EACN,UAAU;EACV,SAAS;EACT,cAAc;EACd,OAAO;EACP,OAAO;EACP,WAAW;EACX,aAAa;EAEb,aAAa;EACb,gBAAgB;EAChB,eAAe;EACf,WAAW;EACX,WAAW;;AAMN,MAAM,UAAyB;EACpC,SAAS;EACT,SAAS;EACT,YAAY;EACZ,aAAa;EACb,aAAa;EACb,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,eAAe;EACf,WAAW;EACX,aAAa;EACb,gBAAgB;EAChB,OAAO;EACP,cAAc;EACd,OAAO;EACP,UAAU;EACV,QAAQ;EACR,eAAe;EACf,OAAO;EACP,OAAO;EACP,gBAAgB;EAChB,gBAAgB;EAChB,KAAK;EACL,MAAM;EACN,MAAM;EACN,OAAO;;AAMF,MAAM,SAAwB;EACnC,OAAO;EACP,aAAa;EACb,aAAa;EACb,cAAc;EACd,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,UAAU;EACV,SAAS;EACT,OAAO;EACP,MAAM;EACN,cAAc;;AAUT,MAAM,SAAwB;EACnC,OAAO;EACP,aAAa;EACb,aAAa;EACb,cAAc;EACd,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,cAAc;;AAMT,MAAM,cAA6B;EACxC,OAAO;EACP,OAAO;EACP,WAAW;EACX,aAAa;EACb,aAAa;EACb,gBAAgB;;AAMX,MAAM,QAAuB;EAClC,eAAe;EACf,WAAW;EACX,WAAW;;AAGN,MAAM,MAAqB;EAChC,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;;AAoCE,MAAM,SAAS,CAAC,MAAc,UAAyB,EAAE,GAAG,SAAS,OAAO,MAAM,MAAM,KAAI,MAAc;AAE/G,QAAM,OAAO,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,MAAO,KAAK,UAAU,QAAQ,KAAkB,KAAM;AAChG,QAAM,gBAAY,0BAAS,IAAI;AAC/B,SAAO,KAAK,OAAO,CAAC,GAAG,MAAK;AAhc9B;AAicI,UAAM,OAAM,eAAU,OAAV,YAA6B;AACzC,QAAI,KAAK;AACP,aAAO,EAAE,QAAQ,IAAI,OAAO,KAAK,IAAI,GAAG,EAAE;IAC5C;AACA,WAAO;EACT,GAAG,SAAS;AACd;",
4
+ "sourcesContent": ["import { sequence } from \"./sequence\";\n\n/**\n * @categoryDescription Taamim\n * Also called \"accent\" characters\n *\n * @categoryDescription Vowels\n * Hebrew vowel characters\n *\n * @categoryDescription Punctuation\n * Characters not bound to other characters (e.g. paseq)\n */\n\n/**\n * Options for removing characters from Hebrew text, divided into categories\n */\nexport interface RemoveOptions {\n /**\n * HEBREW ACCENT ETNAHTA (U+0591)\n * \u25CC\u0591\n * @category Taamim\n */\n ETNAHTA?: boolean;\n /**\n * HEBREW ACCENT SEGOL (U+0592)\n * \u25CC\u0592\n * @category Taamim\n */\n SEGOLTA?: boolean;\n /**\n * HEBREW ACCENT SHALSHELET (U+0593)\n * \u25CC\u0593\n * @category Taamim\n */\n SHALSHELET?: boolean;\n /**\n * HEBREW ACCENT ZAQEF QATAN (U+0594)\n * \u25CC\u0594\n * @category Taamim\n */\n ZAQEF_QATAN?: boolean;\n /**\n * HEBREW ACCENT ZAQEF GADOL (U+0595)\n * \u25CC\u0595\n * @category Taamim\n */\n ZAQEF_GADOL?: boolean;\n /**\n * HEBREW ACCENT TIPEHA (U+0596)\n * \u25CC\u0596\n * @category Taamim\n */\n TIPEHA?: boolean;\n /**\n * HEBREW ACCENT REVIA (U+0597)\n * \u25CC\u0597\n * @category Taamim\n */\n REVIA?: boolean;\n /**\n * HEBREW ACCENT ZARQA (U+0598)\n * \u25CC\u0598\n * @category Taamim\n */\n ZARQA?: boolean;\n /**\n * HEBREW ACCENT PASHTA (U+0599)\n * \u25CC\u0599\n * @category Taamim\n */\n PASHTA?: boolean;\n /**\n * HEBREW ACCENT YETIV (U+059A)\n * \u25CC\u059A\n * @category Taamim\n */\n YETIV?: boolean;\n /**\n * HEBREW ACCENT TEVIR (U+059B)\n * \u25CC\u059B\n * @category Taamim\n */\n TEVIR?: boolean;\n /**\n * HEBREW ACCENT GERESH (U+059C)\n * \u25CC\u059C\n * @category Taamim\n */\n GERESH?: boolean;\n /**\n * HEBREW ACCENT GERESH MUQDAM (U+059D)\n * \u25CC\u059D\n * @category Taamim\n */\n GERESH_MUQDAM?: boolean;\n /**\n * HEBREW ACCENT GERSHAYIM (U+059E)\n * \u25CC\u059E\n * @category Taamim\n */\n GERSHAYIM?: boolean;\n /**\n * HEBREW ACCENT QARNEY PARA (U+059F)\n * \u25CC\u059F\n * @category Taamim\n */\n QARNEY_PARA?: boolean;\n /**\n * HEBREW ACCENT TELISHA GEDOLA (U+05A0)\n * \u25CC\u05A0\n * @category Taamim\n */\n TELISHA_GEDOLA?: boolean;\n /**\n * HEBREW ACCENT PAZER (U+05A1)\n * \u25CC\u05A1\n * @category Taamim\n */\n PAZER?: boolean;\n /**\n * HEBREW ACCENT ATNAH HAFUKH (U+05A2)\n * \u25CC\u05A2\n * @category Taamim\n */\n ATNAH_HAFUKH?: boolean;\n /**\n * HEBREW ACCENT MUNAH (U+05A3)\n * \u25CC\u05A3\n * @category Taamim\n */\n MUNAH?: boolean;\n /**\n * HEBREW ACCENT MAHAPAKH (U+05A4)\n * \u25CC\u05A4\n * @category Taamim\n */\n MAHAPAKH?: boolean;\n /**\n * HEBREW ACCENT MERKHA (U+05A5)\n * \u25CC\u05A5\n * @category Taamim\n */\n MERKHA?: boolean;\n /**\n * HEBREW ACCENT MERKHA KEFULA (U+05A6)\n * \u25CC\u05A6\n * @category Taamim\n */\n MERKHA_KEFULA?: boolean;\n /**\n * HEBREW ACCENT DARGA (U+05A7)\n * \u25CC\u05A7\n * @category Taamim\n */\n DARGA?: boolean;\n /**\n * HEBREW ACCENT QADMA (U+05A8)\n * \u25CC\u05A8\n * @category Taamim\n */\n QADMA?: boolean;\n /**\n * HEBREW ACCENT TELISHA QETANA (U+05A9)\n * \u25CC\u05A9\n * @category Taamim\n */\n TELISHA_QETANA?: boolean;\n /**\n * HEBREW ACCENT YERAH BEN YOMO (U+05AA)\n * \u25CC\u05AA\n * @category Taamim\n */\n YERAH_BEN_YOMO?: boolean;\n /**\n * HEBREW ACCENT OLE (U+05AB)\n * \u25CC\u05AB\n * @category Taamim\n */\n OLE?: boolean;\n /**\n * HEBREW ACCENT ILUY (U+05AC)\n * \u25CC\u05AC\n * @category Taamim\n */\n ILUY?: boolean;\n /**\n * HEBREW ACCENT DEHI (U+05AD)\n * \u25CC\u05AD\n * @category Taamim\n */\n DEHI?: boolean;\n /**\n * HEBREW ACCENT ZINOR (U+05AE)\n * \u25CC\u05AE\n * @category Taamim\n */\n ZINOR?: boolean;\n /**\n * HEBREW POINT SHEVA (U+05B0)\n * \u25CC\u05B0\n * @category Vowels\n */\n SHEVA?: boolean;\n /**\n * HEBREW POINT HATAF SEGOL (U+05B1)\n * \u25CC\u05B1\n * @category Vowels\n */\n HATAF_SEGOL?: boolean;\n /**\n * HEBREW POINT HATAF PATAH (U+05B2)\n * \u25CC\u05B2\n * @category Vowels\n */\n HATAF_PATAH?: boolean;\n /**\n * HEBREW POINT HATAF QAMATS (U+05B3)\n * \u25CC\u05B3\n * @category Vowels\n */\n HATAF_QAMATS?: boolean;\n /**\n * HEBREW POINT HIRIQ (U+05B4)\n * \u25CC\u05B4\n * @category Vowels\n */\n HIRIQ?: boolean;\n /**\n * HEBREW POINT TSERE (U+05B5)\n * \u25CC\u05B5\n * @category Vowels\n */\n TSERE?: boolean;\n /**\n * HEBREW POINT SEGOL (U+05B6)\n * \u25CC\u05B6\n * @category Vowels\n */\n SEGOL?: boolean;\n /**\n * HEBREW POINT PATAH (U+05B7)\n * \u25CC\u05B7\n * @category Vowels\n */\n PATAH?: boolean;\n /**\n * HEBREW POINT QAMATS (U+05B8)\n * \u25CC\u05B8\n * @category Vowels\n */\n QAMATS?: boolean;\n /**\n * HEBREW POINT HOLAM (U+05B9)\n * \u25CC\u05B9\n * @category Vowels\n */\n HOLAM?: boolean;\n /**\n * HEBREW POINT QUBUTS (U+05BB)\n * \u25CC\u05BB\n * @category Vowels\n */\n QUBUTS?: boolean;\n /**\n * HEBREW POINT DAGESH OR MAPIQ (U+05BC)\n * \u25CC\u05BC\n * @category Vowels\n */\n DAGESH?: boolean;\n /**\n * HEBREW POINT METEG (U+05BD)\n * \u25CC\u05BD\n * @category Vowels\n */\n METEG?: boolean;\n /**\n * HEBREW POINT RAFE (U+05BF)\n * \u25CC\u05BF\n * @category Vowels\n */\n RAFE?: boolean;\n /**\n * HEBREW POINT SHIN DOT (U+05C1)\n * \u25CC\u05C1\n * @category Vowels\n */\n SHIN_DOT?: boolean;\n /**\n * HEBREW POINT SIN DOT (U+05C2)\n * \u25CC\u05C2\n * @category Vowels\n */\n SIN_DOT?: boolean;\n /**\n * HEBREW POINT QAMATS QATAN (U+05C7)\n * \u25CC\u05C7\n * @category Vowels\n */\n QAMATS_QATAN?: boolean;\n /**\n * HEBREW PUNCTUATION MAQAF (U+05BE)\n * \u05BE\u25CC\n * @category Punctuation\n *\n * @remarks\n * Unlike other characters, this is replaced with a space instead of being removed.\n */\n MAQAF?: boolean;\n /**\n * HEBREW PUNCTUATION PASEQ (U+05C0)\n * \u05C0 \u25CC\n * @category Punctuation\n */\n PASEQ?: boolean;\n /**\n * HEBREW PUNCTUATION SOF PASUQ (U+05C3)\n * \u05C3\u25CC\n * @category Punctuation\n */\n SOF_PASUQ?: boolean;\n /**\n * HEBREW PUNCTUATION NUN HAFUKHA (U+05C6)\n * \u05C6\n * @category Punctuation\n */\n NUN_HAFUKHA?: boolean;\n /**\n * HEBREW PUNCTUATION GERESH (U+05F3)\n * \u05F3\u25CC\n * @category Punctuation\n * @category Taamim\n *\n * @remarks\n * Distinguished from {@link RemoveOptions.GERESH | GERESH (U+059C)}. This character is mostly used in Modern Hebrew, but could be used in place of the other.\n */\n PUNC_GERESH?: boolean;\n /**\n * HEBREW PUNCTUATION GERSHAYIM (U+05F4)\n * \u05F4\u25CC\n * @category Punctuation\n * @category Taamim\n *\n * @remarks\n * Distinguished from {@link RemoveOptions.GERSHAYIM | GERSHAYIM (U+059E)}. This character is mostly used in Modern Hebrew, but could be used in place of the other.\n */\n PUNC_GERSHAYIM?: boolean;\n /**\n * HEBREW MARK MASORA CIRCLE (U+05AF)\n * \u25CC\u05AF\n * @category Punctuation\n * @category Taamim\n */\n MASORA_CIRCLE?: boolean;\n /**\n * HEBREW MARK UPPER DOT (U+05C4)\n * \u25CC\u05C4\n * @category Punctuation\n * @category Taamim\n */\n UPPER_DOT?: boolean;\n /**\n * HEBREW MARK LOWER DOT (U+05C5)\n * \u25CC\u05C5\n * @category Punctuation\n * @category Taamim\n */\n LOWER_DOT?: boolean;\n}\n\ntype OptionKey = keyof RemoveOptions;\n\ntype map = { [k in keyof RemoveOptions]: string };\n\nconst removeMap: map = {\n ETNAHTA: \"\\u{0591}\", // U+0591 HEBREW ACCENT ETNAHTA\n SEGOLTA: \"\\u{0592}\", // U+0592 HEBREW ACCENT SEGOL\n SHALSHELET: \"\\u{0593}\", // U+0593 HEBREW ACCENT SHALSHELET\n ZAQEF_QATAN: \"\\u{0594}\", // U+0594 HEBREW ACCENT ZAQEF QATAN\n ZAQEF_GADOL: \"\\u{0595}\", // U+0595 HEBREW ACCENT ZAQEF GADOL\n TIPEHA: \"\\u{0596}\", // U+0596 HEBREW ACCENT TIPEHA\n REVIA: \"\\u{0597}\", // U+0597 HEBREW ACCENT REVIA\n ZARQA: \"\\u{0598}\", // U+0598 HEBREW ACCENT ZARQA\n PASHTA: \"\\u{0599}\", // U+0599 HEBREW ACCENT PASHTA\n YETIV: \"\\u{059A}\", // U+059A HEBREW ACCENT YETIV\n TEVIR: \"\\u{059B}\", // U+059B HEBREW ACCENT TEVIR\n GERESH: \"\\u{059C}\", // U+059C HEBREW ACCENT GERESH\n GERESH_MUQDAM: \"\\u{059D}\", // U+059D HEBREW ACCENT GERESH MUQDAM\n GERSHAYIM: \"\\u{059E}\", // U+059E HEBREW ACCENT GERSHAYIM\n QARNEY_PARA: \"\\u{059F}\", // U+059F HEBREW ACCENT QARNEY PARA\n TELISHA_GEDOLA: \"\\u{05A0}\", // U+05A0 HEBREW ACCENT TELISHA GEDOLA\n PAZER: \"\\u{05A1}\", // U+05A1 HEBREW ACCENT PAZER\n ATNAH_HAFUKH: \"\\u{05A2}\", // U+05A2 HEBREW ACCENT ATNAH HAFUKH\n MUNAH: \"\\u{05A3}\", // U+05A3 HEBREW ACCENT MUNAH\n MAHAPAKH: \"\\u{05A4}\", // U+05A4 HEBREW ACCENT MAHAPAKH\n MERKHA: \"\\u{05A5}\", // U+05A5 HEBREW ACCENT MERKHA\n MERKHA_KEFULA: \"\\u{05A6}\", // U+05A6 HEBREW ACCENT MERKHA KEFULA\n DARGA: \"\\u{05A7}\", // U+05A7 HEBREW ACCENT DARGA\n QADMA: \"\\u{05A8}\", // U+05A8 HEBREW ACCENT QADMA\n TELISHA_QETANA: \"\\u{05A9}\", // U+05A9 HEBREW ACCENT TELISHA QETANA\n YERAH_BEN_YOMO: \"\\u{05AA}\", // U+05AA HEBREW ACCENT YERAH BEN YOMO\n OLE: \"\\u{05AB}\", // U+05AB HEBREW ACCENT OLE\n ILUY: \"\\u{05AC}\", // U+05AC HEBREW ACCENT ILUY\n DEHI: \"\\u{05AD}\", // U+05AD HEBREW ACCENT DEHI\n ZINOR: \"\\u{05AE}\", // U+05AE HEBREW ACCENT ZINOR\n SHEVA: \"\\u{05B0}\", // HEBREW POINT SHEVA\n HATAF_SEGOL: \"\\u{05B1}\", // HEBREW POINT HATAF SEGOL\n HATAF_PATAH: \"\\u{05B2}\", // HEBREW POINT HATAF PATAH\n HATAF_QAMATS: \"\\u{05B3}\", // HEBREW POINT HATAF QAMATS\n HIRIQ: \"\\u{05B4}\", // HEBREW POINT HIRIQ\n TSERE: \"\\u{05B5}\", // HEBREW POINT TSERE\n SEGOL: \"\\u{05B6}\", // HEBREW POINT SEGOL\n PATAH: \"\\u{05B7}\", // HEBREW POINT PATAH\n QAMATS: \"\\u{05B8}\", // HEBREW POINT QAMATS\n HOLAM: \"\\u{05B9}\", // HEBREW POINT HOLAM\n // below is not needed because sequnce() does not output this\n // HOLAM_HASER_FOR_VAV: \"\\u{05BA}\", // HEBREW POINT HOLAM HASER FOR VAV\n QUBUTS: \"\\u{05BB}\", // HEBREW POINT QUBUTS\n DAGESH: \"\\u{05BC}\", // HEBREW POINT DAGESH OR MAPIQ\n METEG: \"\\u{05BD}\", // HEBREW POINT METEG\n RAFE: \"\\u{05BF}\", // HEBREW POINT RAFE\n SHIN_DOT: \"\\u{05C1}\", // HEBREW POINT SHIN DOT\n SIN_DOT: \"\\u{05C2}\", // HEBREW POINT SIN DOT\n QAMATS_QATAN: \"\\u{05C7}\", // HEBREW POINT QAMATS QATAN\n MAQAF: \"\\u{05BE}\", // HEBREW PUNCTUATION MAQAF\n PASEQ: \"\\u{05C0}\", // HEBREW PUNCTUATION PASEQ\n SOF_PASUQ: \"\\u{05C3}\", // HEBREW PUNCTUATION SOF_PASUQ\n NUN_HAFUKHA: \"\\u{05C6}\", // HEBREW PUNCTUATION NUN_HAFUKHA\n PUNC_GERESH: \"\\u{05F3}\", // HEBREW PUNCTUATION GERESH\n PUNC_GERSHAYIM: \"\\u{05F4}\", // HEBREW PUNCTUATION GERSHAYIM\n MASORA_CIRCLE: \"\\u{05AF}\", // U+MASORA CIRCLE HEBREW MARK 05AF,\n UPPER_DOT: \"\\u{05C4}\", // U+UPPER DOT HEBREW MARK 05C4,\n LOWER_DOT: \"\\u{05C5}\" // U+LOWER DOT HEBREW MARK 05C5];\n};\n\n/**\n * removes all chars called HEBREW ACCENT (U+0591-05AF)\n */\nexport const accents: RemoveOptions = {\n ETNAHTA: true,\n SEGOLTA: true,\n SHALSHELET: true,\n ZAQEF_QATAN: true,\n ZAQEF_GADOL: true,\n TIPEHA: true,\n REVIA: true,\n ZARQA: true,\n PASHTA: true,\n YETIV: true,\n TEVIR: true,\n GERESH: true,\n GERESH_MUQDAM: true,\n GERSHAYIM: true,\n QARNEY_PARA: true,\n TELISHA_GEDOLA: true,\n PAZER: true,\n ATNAH_HAFUKH: true,\n MUNAH: true,\n MAHAPAKH: true,\n MERKHA: true,\n MERKHA_KEFULA: true,\n DARGA: true,\n QADMA: true,\n TELISHA_QETANA: true,\n YERAH_BEN_YOMO: true,\n OLE: true,\n ILUY: true,\n DEHI: true,\n ZINOR: true\n};\n\n/**\n * removes all chars called HEBREW POINT (U+05B0-05BD, U+05BF, U+05C1-05C2 and U+05C7)\n */\nexport const points: RemoveOptions = {\n SHEVA: true,\n HATAF_SEGOL: true,\n HATAF_PATAH: true,\n HATAF_QAMATS: true,\n HIRIQ: true,\n TSERE: true,\n SEGOL: true,\n PATAH: true,\n QAMATS: true,\n HOLAM: true,\n QUBUTS: true,\n DAGESH: true,\n SHIN_DOT: true,\n SIN_DOT: true,\n METEG: true,\n RAFE: true,\n QAMATS_QATAN: true\n};\n\n/**\n * removes chars called HEBREW POINT (U+05B0-05BC and U+05C7) except for:\n * - SHIN_DOT\n * - SIN_DOT\n * - METEG\n * - RAFE\n */\nexport const vowels: RemoveOptions = {\n SHEVA: true,\n HATAF_SEGOL: true,\n HATAF_PATAH: true,\n HATAF_QAMATS: true,\n HIRIQ: true,\n TSERE: true,\n SEGOL: true,\n PATAH: true,\n QAMATS: true,\n HOLAM: true,\n QUBUTS: true,\n DAGESH: true,\n QAMATS_QATAN: true\n};\n\n/**\n * removes all chars called HEBREW PUNCTUATION (U+05BE, U+05C0, U+05C3, and U+05C6)\n */\nexport const punctuation: RemoveOptions = {\n MAQAF: true,\n PASEQ: true,\n SOF_PASUQ: true,\n NUN_HAFUKHA: true,\n PUNC_GERESH: true,\n PUNC_GERSHAYIM: true\n};\n\n/**\n * removes all chars called HEBREW MARK (U+05AF, U+05C4, and U+05C5)\n */\nexport const marks: RemoveOptions = {\n MASORA_CIRCLE: true,\n UPPER_DOT: true,\n LOWER_DOT: true\n};\n\nexport const all: RemoveOptions = {\n ...accents,\n ...points,\n ...punctuation,\n ...marks\n};\n\n/**\n * Removes niqqud from Hebrew text\n *\n * @param text - a string of Hebrew characters\n * @param options\n * @returns Hebrew characters with accents and niqqud optionally removed\n *\n * @example\n * Default\n * ```ts\n * // by default removes all accents and metheg and rafe\n * remove(\"\u05E9\u05C2\u05B8\u05E8\u05B7\u05A3\u05D9 \u05D0\u05B4\u05E9\u05C1\u05B0\u05EA\u05BC\u05B0\u05DA\u05B8\u0594, \u05D5\u05B7\u05BD\u05D9\u05B4\u05BC\u05DE\u05B0\u05E6\u05B0\u05D0\u0597\u05D5\u05BC\");\n * // \u05E9\u05C2\u05B8\u05E8\u05B7\u05D9 \u05D0\u05B4\u05E9\u05C1\u05B0\u05EA\u05BC\u05B0\u05DA\u05B8, \u05D5\u05B7\u05D9\u05B4\u05BC\u05DE\u05B0\u05E6\u05B0\u05D0\u05D5\u05BC\n * ```\n *\n * @example\n * Remove accents and vowels, but not shin/sin dots\n * ```ts\n * import { accents, vowels } from \"hebrew-transliteration/removeOptions\";\n *\n * remove(\"\u05E9\u05C2\u05B8\u05E8\u05B7\u05A3\u05D9 \u05D0\u05B4\u05E9\u05C1\u05B0\u05EA\u05BC\u05B0\u05DA\u05B8\u0594, \u05D5\u05B7\u05BD\u05D9\u05B4\u05BC\u05DE\u05B0\u05E6\u05B0\u05D0\u0597\u05D5\u05BC\", { ...accents, ...vowels, METEG: true });\n * // \u05E9\u05C2\u05E8\u05D9 \u05D0\u05E9\u05C1\u05EA\u05DA, \u05D5\u05D9\u05DE\u05E6\u05D0\u05D5\n * ```\n *\n * @example\n * Remove all\n * ```ts\n * import { all } from \"hebrew-transliteration/removeOptions\";\n *\n * remove(\"\u05E9\u05C2\u05B8\u05E8\u05B7\u05A3\u05D9 \u05D0\u05B4\u05E9\u05C1\u05B0\u05EA\u05BC\u05B0\u05DA\u05B8\u0594, \u05D5\u05B7\u05BD\u05D9\u05B4\u05BC\u05DE\u05B0\u05E6\u05B0\u05D0\u0597\u05D5\u05BC\", all);\n * // \u05E9\u05E8\u05D9 \u05D0\u05E9\u05EA\u05DA, \u05D5\u05D9\u05DE\u05E6\u05D0\u05D5\n * ```\n */\nexport const remove = (text: string, options: RemoveOptions = { ...accents, METEG: true, RAFE: true }): string => {\n /** all the keys of options that are to be removed */\n const keys = Object.keys(options).filter((k) => (k in options ? options[k as OptionKey] : false));\n const sequenced = sequence(text);\n return keys.reduce((a, c) => {\n const key = removeMap[c as OptionKey] ?? null;\n if (key) {\n // if it is a MAQAF, replace it with a space\n const replacement = key === \"\\u{05BE}\" ? \" \" : \"\";\n return a.replace(new RegExp(key, \"gu\"), replacement);\n }\n return a;\n }, sequenced);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;sBAAyB;AAqXzB,MAAM,YAAiB;EACrB,SAAS;EACT,SAAS;EACT,YAAY;EACZ,aAAa;EACb,aAAa;EACb,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,eAAe;EACf,WAAW;EACX,aAAa;EACb,gBAAgB;EAChB,OAAO;EACP,cAAc;EACd,OAAO;EACP,UAAU;EACV,QAAQ;EACR,eAAe;EACf,OAAO;EACP,OAAO;EACP,gBAAgB;EAChB,gBAAgB;EAChB,KAAK;EACL,MAAM;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,aAAa;EACb,aAAa;EACb,cAAc;EACd,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EAGP,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,MAAM;EACN,UAAU;EACV,SAAS;EACT,cAAc;EACd,OAAO;EACP,OAAO;EACP,WAAW;EACX,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,eAAe;EACf,WAAW;EACX,WAAW;;AAMN,MAAM,UAAyB;EACpC,SAAS;EACT,SAAS;EACT,YAAY;EACZ,aAAa;EACb,aAAa;EACb,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,eAAe;EACf,WAAW;EACX,aAAa;EACb,gBAAgB;EAChB,OAAO;EACP,cAAc;EACd,OAAO;EACP,UAAU;EACV,QAAQ;EACR,eAAe;EACf,OAAO;EACP,OAAO;EACP,gBAAgB;EAChB,gBAAgB;EAChB,KAAK;EACL,MAAM;EACN,MAAM;EACN,OAAO;;AAMF,MAAM,SAAwB;EACnC,OAAO;EACP,aAAa;EACb,aAAa;EACb,cAAc;EACd,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,UAAU;EACV,SAAS;EACT,OAAO;EACP,MAAM;EACN,cAAc;;AAUT,MAAM,SAAwB;EACnC,OAAO;EACP,aAAa;EACb,aAAa;EACb,cAAc;EACd,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,cAAc;;AAMT,MAAM,cAA6B;EACxC,OAAO;EACP,OAAO;EACP,WAAW;EACX,aAAa;EACb,aAAa;EACb,gBAAgB;;AAMX,MAAM,QAAuB;EAClC,eAAe;EACf,WAAW;EACX,WAAW;;AAGN,MAAM,MAAqB;EAChC,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;;AAoCE,MAAM,SAAS,CAAC,MAAc,UAAyB,EAAE,GAAG,SAAS,OAAO,MAAM,MAAM,KAAI,MAAc;AAE/G,QAAM,OAAO,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,MAAO,KAAK,UAAU,QAAQ,KAAkB,KAAM;AAChG,QAAM,gBAAY,0BAAS,IAAI;AAC/B,SAAO,KAAK,OAAO,CAAC,GAAG,MAAK;AArkB9B;AAskBI,UAAM,OAAM,eAAU,OAAV,YAA6B;AACzC,QAAI,KAAK;AAEP,YAAM,cAAc,QAAQ,WAAa,MAAM;AAC/C,aAAO,EAAE,QAAQ,IAAI,OAAO,KAAK,IAAI,GAAG,WAAW;IACrD;AACA,WAAO;EACT,GAAG,SAAS;AACd;",
6
6
  "names": []
7
7
  }