vietnamese-phonetic-transcript 1.0.0 → 1.0.1
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 +30 -3
- package/dist/index.cjs +765 -268
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -23
- package/dist/index.d.mts +29 -0
- package/dist/index.mjs +768 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +38 -37
- package/dist/index.d.ts +0 -27
- package/dist/index.js +0 -245
- package/dist/index.js.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/index.ts","../lib/phonetic_transcript/phonetic_transcript.ts"],"sourcesContent":["export * from './phonetic_transcript/phonetic_transcript';\n","export type PhoneticTranscript = {\n main: string;\n mainCharacter: string;\n medial?: string;\n medialCharacter?: string;\n initial?: string;\n initialCharacter?: string;\n final?: string;\n finalCharacter?: string;\n toneMark: number;\n};\n\nexport type Constraint = {\n phoneme: string;\n character: string;\n initial?: Array<string>;\n notInitial?: Array<string>;\n medial?: Array<string>;\n notMedial?: Array<string>;\n main?: Array<string>;\n notMain?: Array<string>;\n final?: Array<string>;\n notFinal?: Array<string>;\n};\n\n// NOTE: Check the character orders, because \"t\" might be matched before \"th\"\nconst initialList = [\n { phoneme: 'b-', character: 'b' },\n { phoneme: 'm-', character: 'm' },\n { phoneme: 'f-', character: 'ph' },\n\n { phoneme: 'v-', character: 'v' },\n\n { phoneme: 'tʼ-', character: 'th' },\n\n { phoneme: 'ʈ-', character: 'tr' },\n\n { phoneme: 't-', character: 't' },\n\n { phoneme: 'd-', character: 'đ' },\n\n { phoneme: 'ɲ-', character: 'nh' },\n\n { phoneme: 'ŋ-', character: 'ngh', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'ŋ-', character: 'ng' },\n\n { phoneme: 'n-', character: 'n' },\n\n { phoneme: 'z-', character: 'd' },\n { phoneme: 'z-', character: 'gi' },\n\n { phoneme: 'ʐ-', character: 'r' },\n\n { phoneme: 's-', character: 'x' },\n { phoneme: 'ʂ-', character: 's' },\n\n { phoneme: 'l-', character: 'l' },\n\n { phoneme: 'χ-', character: 'kh' },\n\n { phoneme: 'c-', character: 'ch' },\n\n { phoneme: 'k-', character: 'k', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'k-', character: 'q', medial: ['-u-'] },\n { phoneme: 'k-', character: 'c' },\n\n { phoneme: 'ɣ-', character: 'gh', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'ɣ-', character: 'g' },\n\n { phoneme: 'h-', character: 'h' },\n] satisfies Constraint[];\n\nconst medialList = [\n {\n phoneme: '-u-',\n character: 'u',\n initial: ['k-'],\n main: ['-i-', '-e-', '-ɤ-', '-ɤ-', '-ie-'],\n },\n {\n phoneme: '-u-',\n character: 'o',\n },\n] satisfies Constraint[];\n\nconst mainList = [\n {\n phoneme: '-i-',\n character: 'y',\n medial: ['-u-', 'zero'],\n initial: ['zero'],\n final: ['zero'],\n },\n { phoneme: '-i-', character: 'i' },\n\n { phoneme: '-e-', character: 'ê' },\n\n { phoneme: '-ɛ-', character: 'e' },\n\n { phoneme: '-ɯ-', character: 'ư' },\n\n { phoneme: '-ɤ-', character: 'ơ' },\n\n { phoneme: '-a-', character: 'a' },\n\n { phoneme: '-u-', character: 'u' },\n\n { phoneme: '-o-', character: 'ô' },\n { phoneme: '-o-', character: 'ôô' },\n\n { phoneme: '-ɔ-', character: 'o' },\n { phoneme: '-ɔ-', character: 'oo' },\n\n { phoneme: '-ɤ-', character: 'â' },\n\n { phoneme: '-ɛ-', character: 'a' },\n\n { phoneme: '-ă-', character: 'a', final: ['-w', '-j'] },\n { phoneme: '-ă-', character: 'ă' },\n\n { phoneme: '-ɔ-', character: 'o', final: ['-ŋ', '-k'] },\n\n { phoneme: '-ie-', character: 'iê', notFinal: ['zero'], medial: ['zero'] },\n {\n phoneme: '-ie-',\n character: 'yê',\n notFinal: ['zero'],\n medial: ['-u-'],\n initial: ['zero'],\n },\n { phoneme: '-ie-', character: 'ia', final: ['zero'], medial: ['zero'] },\n { phoneme: '-ie-', character: 'ya', final: ['zero'], medial: ['-u-'] },\n\n { phoneme: '-ɯɤ-', character: 'ươ', notFinal: ['zero'] },\n { phoneme: '-ɯɤ-', character: 'ưa', final: ['zero'] },\n\n { phoneme: '-uo-', character: 'uô', notFinal: ['zero'] },\n { phoneme: '-uo-', character: 'ua', final: ['zero'] },\n] satisfies Constraint[];\n\nconst finalList = [\n { phoneme: '-m', character: 'm' },\n\n { phoneme: '-n', character: 'n' },\n\n { phoneme: '-p', character: 'p' },\n\n { phoneme: '-t', character: 't' },\n\n { phoneme: '-ŋ', character: 'nh', main: ['-i-', '-e-', '-ɛ-'] },\n { phoneme: '-ŋ', character: 'ng' },\n\n { phoneme: '-k', character: 'ch', main: ['-i-', '-e-', '-ɛ-'] },\n { phoneme: '-k', character: 'c' },\n\n { phoneme: '-w', character: 'o', main: ['-a-', '-ɛ-'] },\n { phoneme: '-w', character: 'u' },\n\n { phoneme: '-j', character: 'y', main: ['-ă-', '-ɤ-'] },\n { phoneme: '-j', character: 'i' },\n] satisfies Constraint[];\n\nconst toneMarkList = [\n { character: 'a', originalCharacter: 'a', toneMark: 1 },\n { character: 'à', originalCharacter: 'a', toneMark: 2 },\n { character: 'ã', originalCharacter: 'a', toneMark: 3 },\n { character: 'ả', originalCharacter: 'a', toneMark: 4 },\n { character: 'á', originalCharacter: 'a', toneMark: 5 },\n { character: 'ạ', originalCharacter: 'a', toneMark: 6 },\n\n { character: 'ă', originalCharacter: 'ă', toneMark: 1 },\n { character: 'ằ', originalCharacter: 'ă', toneMark: 2 },\n { character: 'ẵ', originalCharacter: 'ă', toneMark: 3 },\n { character: 'ẳ', originalCharacter: 'ă', toneMark: 4 },\n { character: 'ắ', originalCharacter: 'ă', toneMark: 5 },\n { character: 'ặ', originalCharacter: 'ă', toneMark: 6 },\n\n { character: 'â', originalCharacter: 'â', toneMark: 1 },\n { character: 'ầ', originalCharacter: 'â', toneMark: 2 },\n { character: 'ẫ', originalCharacter: 'â', toneMark: 3 },\n { character: 'ẩ', originalCharacter: 'â', toneMark: 4 },\n { character: 'ấ', originalCharacter: 'â', toneMark: 5 },\n { character: 'ậ', originalCharacter: 'â', toneMark: 6 },\n\n { character: 'e', originalCharacter: 'e', toneMark: 1 },\n { character: 'è', originalCharacter: 'e', toneMark: 2 },\n { character: 'ẽ', originalCharacter: 'e', toneMark: 3 },\n { character: 'ẻ', originalCharacter: 'e', toneMark: 4 },\n { character: 'é', originalCharacter: 'e', toneMark: 5 },\n { character: 'ẹ', originalCharacter: 'e', toneMark: 6 },\n\n { character: 'ê', originalCharacter: 'ê', toneMark: 1 },\n { character: 'ề', originalCharacter: 'ê', toneMark: 2 },\n { character: 'ễ', originalCharacter: 'ê', toneMark: 3 },\n { character: 'ể', originalCharacter: 'ê', toneMark: 4 },\n { character: 'ế', originalCharacter: 'ê', toneMark: 5 },\n { character: 'ệ', originalCharacter: 'ê', toneMark: 6 },\n\n { character: 'i', originalCharacter: 'i', toneMark: 1 },\n { character: 'ì', originalCharacter: 'i', toneMark: 2 },\n { character: 'ĩ', originalCharacter: 'i', toneMark: 3 },\n { character: 'ỉ', originalCharacter: 'i', toneMark: 4 },\n { character: 'í', originalCharacter: 'i', toneMark: 5 },\n { character: 'ị', originalCharacter: 'i', toneMark: 6 },\n\n { character: 'o', originalCharacter: 'o', toneMark: 1 },\n { character: 'ò', originalCharacter: 'o', toneMark: 2 },\n { character: 'õ', originalCharacter: 'o', toneMark: 3 },\n { character: 'ỏ', originalCharacter: 'o', toneMark: 4 },\n { character: 'ó', originalCharacter: 'o', toneMark: 5 },\n { character: 'ọ', originalCharacter: 'o', toneMark: 6 },\n\n { character: 'ô', originalCharacter: 'ô', toneMark: 1 },\n { character: 'ồ', originalCharacter: 'ô', toneMark: 2 },\n { character: 'ỗ', originalCharacter: 'ô', toneMark: 3 },\n { character: 'ổ', originalCharacter: 'ô', toneMark: 4 },\n { character: 'ố', originalCharacter: 'ô', toneMark: 5 },\n { character: 'ộ', originalCharacter: 'ô', toneMark: 6 },\n\n { character: 'ơ', originalCharacter: 'ơ', toneMark: 1 },\n { character: 'ờ', originalCharacter: 'ơ', toneMark: 2 },\n { character: 'ỡ', originalCharacter: 'ơ', toneMark: 3 },\n { character: 'ở', originalCharacter: 'ơ', toneMark: 4 },\n { character: 'ớ', originalCharacter: 'ơ', toneMark: 5 },\n { character: 'ợ', originalCharacter: 'ơ', toneMark: 6 },\n\n { character: 'u', originalCharacter: 'u', toneMark: 1 },\n { character: 'ù', originalCharacter: 'u', toneMark: 2 },\n { character: 'ũ', originalCharacter: 'u', toneMark: 3 },\n { character: 'ủ', originalCharacter: 'u', toneMark: 4 },\n { character: 'ú', originalCharacter: 'u', toneMark: 5 },\n { character: 'ụ', originalCharacter: 'u', toneMark: 6 },\n\n { character: 'ư', originalCharacter: 'ư', toneMark: 1 },\n { character: 'ừ', originalCharacter: 'ư', toneMark: 2 },\n { character: 'ữ', originalCharacter: 'ư', toneMark: 3 },\n { character: 'ử', originalCharacter: 'ư', toneMark: 4 },\n { character: 'ứ', originalCharacter: 'ư', toneMark: 5 },\n { character: 'ự', originalCharacter: 'ư', toneMark: 6 },\n\n { character: 'y', originalCharacter: 'y', toneMark: 1 },\n { character: 'ỳ', originalCharacter: 'y', toneMark: 2 },\n { character: 'ỹ', originalCharacter: 'y', toneMark: 3 },\n { character: 'ỷ', originalCharacter: 'y', toneMark: 4 },\n { character: 'ý', originalCharacter: 'y', toneMark: 5 },\n { character: 'ỵ', originalCharacter: 'y', toneMark: 6 },\n];\n\nconst transcriptToString = (transcript: PhoneticTranscript): string => {\n if (!transcript.main || !transcript.toneMark) {\n throw new Error('Invalid phonetic transcript');\n }\n\n return (\n (transcript.initial?.replaceAll('-', '') || '') +\n (transcript?.medial?.replaceAll('-', '') || '') +\n transcript.main.replaceAll('-', '') +\n (transcript.final?.replaceAll('-', '') || '') +\n transcript.toneMark.toString()\n );\n};\n\nconst buildPhoneticTranscript = (word: string): PhoneticTranscript => {\n word = word.toLowerCase();\n\n let transcript = {\n toneMark: 1,\n } as PhoneticTranscript;\n\n // NOTE: Check tone mark\n toneMarkList.forEach((toneMark) => {\n if (toneMark.toneMark !== 1 && word.includes(toneMark.character)) {\n transcript.toneMark = toneMark.toneMark;\n\n word = word.replace(toneMark.character, toneMark.originalCharacter);\n }\n });\n\n // NOTE: Check initial\n initialList.forEach((initial) => {\n if (\n word.startsWith(initial.character) &&\n word.length - initial.character.length > 0\n ) {\n transcript.initial = initial.phoneme;\n transcript.initialCharacter = initial.character;\n\n word = word.slice(initial.character.length);\n }\n });\n\n // NOTE: Check final\n finalList.forEach((final) => {\n if (\n word.endsWith(final.character) &&\n word.length - final.character.length > 0\n ) {\n transcript.final = final.phoneme;\n transcript.finalCharacter = final.character;\n\n word = word.slice(0, word.length - final.character.length);\n }\n });\n\n // NOTE: Check medial\n if (word.length > 1 && word !== 'oo') {\n if (\n word.startsWith('u') &&\n (transcript.initialCharacter === 'q' ||\n ['y', 'i', 'ê', 'ơ', 'â', 'iê', 'yê', 'ia', 'ya'].includes(\n word.slice(1),\n ))\n ) {\n transcript.medial = medialList[0]!.phoneme;\n transcript.medialCharacter = medialList[0]!.character;\n\n word = word.slice(1);\n } else if (word.startsWith('o')) {\n transcript.medial = medialList[1]!.phoneme;\n transcript.medialCharacter = medialList[1]!.character;\n\n word = word.slice(1);\n }\n }\n\n if (\n word === 'o' &&\n transcript.finalCharacter &&\n ['nh', 'ng', 'ch', 'c'].includes(transcript.finalCharacter)\n ) {\n const main = mainList.filter((main) => main.phoneme === '-ɔ-');\n\n transcript.main = main[0]!.phoneme;\n transcript.mainCharacter = main[0]!.character;\n\n word = word.slice(1);\n } else {\n // NOTE: Check main\n mainList.forEach((main) => {\n if (word === main.character) {\n transcript.main = main.phoneme;\n transcript.mainCharacter = main.character;\n\n word = word.slice(main.character.length);\n }\n });\n }\n\n return transcript;\n};\n\nexport const phoneticTranscriptWord = (word: string) => {\n return word.replaceAll(/[^\\P{L}]+/gmu, (word) => {\n try {\n return transcriptToString(buildPhoneticTranscript(word));\n } catch (e) {\n return word;\n }\n });\n};\n\nexport const phoneticTranscriptSentence = (sentence: string): string => {\n return sentence\n .split(' ')\n .map((word) => phoneticTranscriptWord(word))\n .join(' ');\n};\n"],"mappings":"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","names":["main","word"]}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/phonetic_transcript/phonetic_transcript.ts"],"sourcesContent":["export type PhoneticTranscript = {\n main: string\n mainCharacter: string\n medial?: string\n medialCharacter?: string\n initial?: string\n initialCharacter?: string\n final?: string\n finalCharacter?: string\n toneMark: number\n}\n\nexport type Constraint = {\n phoneme: string\n character: string\n initial?: Array<string>\n notInitial?: Array<string>\n medial?: Array<string>\n notMedial?: Array<string>\n main?: Array<string>\n notMain?: Array<string>\n final?: Array<string>\n notFinal?: Array<string>\n}\n\n// NOTE: Check the character orders, because \"t\" might be matched before \"th\"\nconst initialList = [\n { phoneme: 'b-', character: 'b' },\n { phoneme: 'm-', character: 'm' },\n { phoneme: 'f-', character: 'ph' },\n\n { phoneme: 'v-', character: 'v' },\n\n { phoneme: 'tʼ-', character: 'th' },\n\n { phoneme: 'ʈ-', character: 'tr' },\n\n { phoneme: 't-', character: 't' },\n\n { phoneme: 'd-', character: 'đ' },\n\n { phoneme: 'ɲ-', character: 'nh' },\n\n { phoneme: 'ŋ-', character: 'ngh', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'ŋ-', character: 'ng' },\n\n { phoneme: 'n-', character: 'n' },\n\n { phoneme: 'z-', character: 'd' },\n { phoneme: 'z-', character: 'gi' },\n\n { phoneme: 'ʐ-', character: 'r' },\n\n { phoneme: 's-', character: 'x' },\n { phoneme: 'ʂ-', character: 's' },\n\n { phoneme: 'l-', character: 'l' },\n\n { phoneme: 'χ-', character: 'kh' },\n\n { phoneme: 'c-', character: 'ch' },\n\n { phoneme: 'k-', character: 'k', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'k-', character: 'q', medial: ['-u-'] },\n { phoneme: 'k-', character: 'c' },\n\n { phoneme: 'ɣ-', character: 'gh', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'ɣ-', character: 'g' },\n\n { phoneme: 'h-', character: 'h' },\n] satisfies Constraint[]\n\nconst medialList = [\n {\n phoneme: '-u-',\n character: 'u',\n initial: ['k-'],\n main: ['-i-', '-e-', '-ɤ-', '-ɤ-', '-ie-'],\n },\n {\n phoneme: '-u-',\n character: 'o',\n },\n] satisfies Constraint[]\n\nconst mainList = [\n {\n phoneme: '-i-',\n character: 'y',\n medial: ['-u-', 'zero'],\n initial: ['zero'],\n final: ['zero'],\n },\n { phoneme: '-i-', character: 'i' },\n\n { phoneme: '-e-', character: 'ê' },\n\n { phoneme: '-ɛ-', character: 'e' },\n\n { phoneme: '-ɯ-', character: 'ư' },\n\n { phoneme: '-ɤ-', character: 'ơ' },\n\n { phoneme: '-a-', character: 'a' },\n\n { phoneme: '-u-', character: 'u' },\n\n { phoneme: '-o-', character: 'ô' },\n { phoneme: '-o-', character: 'ôô' },\n\n { phoneme: '-ɔ-', character: 'o' },\n { phoneme: '-ɔ-', character: 'oo' },\n\n { phoneme: '-ɤ-', character: 'â' },\n\n { phoneme: '-ɛ-', character: 'a' },\n\n { phoneme: '-ă-', character: 'a', final: ['-w', '-j'] },\n { phoneme: '-ă-', character: 'ă' },\n\n { phoneme: '-ɔ-', character: 'o', final: ['-ŋ', '-k'] },\n\n { phoneme: '-ie-', character: 'iê', notFinal: ['zero'], medial: ['zero'] },\n {\n phoneme: '-ie-',\n character: 'yê',\n notFinal: ['zero'],\n medial: ['-u-'],\n initial: ['zero'],\n },\n { phoneme: '-ie-', character: 'ia', final: ['zero'], medial: ['zero'] },\n { phoneme: '-ie-', character: 'ya', final: ['zero'], medial: ['-u-'] },\n\n { phoneme: '-ɯɤ-', character: 'ươ', notFinal: ['zero'] },\n { phoneme: '-ɯɤ-', character: 'ưa', final: ['zero'] },\n\n { phoneme: '-uo-', character: 'uô', notFinal: ['zero'] },\n { phoneme: '-uo-', character: 'ua', final: ['zero'] },\n] satisfies Constraint[]\n\nconst finalList = [\n { phoneme: '-m', character: 'm' },\n\n { phoneme: '-n', character: 'n' },\n\n { phoneme: '-p', character: 'p' },\n\n { phoneme: '-t', character: 't' },\n\n { phoneme: '-ŋ', character: 'nh', main: ['-i-', '-e-', '-ɛ-'] },\n { phoneme: '-ŋ', character: 'ng' },\n\n { phoneme: '-k', character: 'ch', main: ['-i-', '-e-', '-ɛ-'] },\n { phoneme: '-k', character: 'c' },\n\n { phoneme: '-w', character: 'o', main: ['-a-', '-ɛ-'] },\n { phoneme: '-w', character: 'u' },\n\n { phoneme: '-j', character: 'y', main: ['-ă-', '-ɤ-'] },\n { phoneme: '-j', character: 'i' },\n] satisfies Constraint[]\n\nconst toneMarkList = [\n { character: 'a', originalCharacter: 'a', toneMark: 1 },\n { character: 'à', originalCharacter: 'a', toneMark: 2 },\n { character: 'ã', originalCharacter: 'a', toneMark: 3 },\n { character: 'ả', originalCharacter: 'a', toneMark: 4 },\n { character: 'á', originalCharacter: 'a', toneMark: 5 },\n { character: 'ạ', originalCharacter: 'a', toneMark: 6 },\n\n { character: 'ă', originalCharacter: 'ă', toneMark: 1 },\n { character: 'ằ', originalCharacter: 'ă', toneMark: 2 },\n { character: 'ẵ', originalCharacter: 'ă', toneMark: 3 },\n { character: 'ẳ', originalCharacter: 'ă', toneMark: 4 },\n { character: 'ắ', originalCharacter: 'ă', toneMark: 5 },\n { character: 'ặ', originalCharacter: 'ă', toneMark: 6 },\n\n { character: 'â', originalCharacter: 'â', toneMark: 1 },\n { character: 'ầ', originalCharacter: 'â', toneMark: 2 },\n { character: 'ẫ', originalCharacter: 'â', toneMark: 3 },\n { character: 'ẩ', originalCharacter: 'â', toneMark: 4 },\n { character: 'ấ', originalCharacter: 'â', toneMark: 5 },\n { character: 'ậ', originalCharacter: 'â', toneMark: 6 },\n\n { character: 'e', originalCharacter: 'e', toneMark: 1 },\n { character: 'è', originalCharacter: 'e', toneMark: 2 },\n { character: 'ẽ', originalCharacter: 'e', toneMark: 3 },\n { character: 'ẻ', originalCharacter: 'e', toneMark: 4 },\n { character: 'é', originalCharacter: 'e', toneMark: 5 },\n { character: 'ẹ', originalCharacter: 'e', toneMark: 6 },\n\n { character: 'ê', originalCharacter: 'ê', toneMark: 1 },\n { character: 'ề', originalCharacter: 'ê', toneMark: 2 },\n { character: 'ễ', originalCharacter: 'ê', toneMark: 3 },\n { character: 'ể', originalCharacter: 'ê', toneMark: 4 },\n { character: 'ế', originalCharacter: 'ê', toneMark: 5 },\n { character: 'ệ', originalCharacter: 'ê', toneMark: 6 },\n\n { character: 'i', originalCharacter: 'i', toneMark: 1 },\n { character: 'ì', originalCharacter: 'i', toneMark: 2 },\n { character: 'ĩ', originalCharacter: 'i', toneMark: 3 },\n { character: 'ỉ', originalCharacter: 'i', toneMark: 4 },\n { character: 'í', originalCharacter: 'i', toneMark: 5 },\n { character: 'ị', originalCharacter: 'i', toneMark: 6 },\n\n { character: 'o', originalCharacter: 'o', toneMark: 1 },\n { character: 'ò', originalCharacter: 'o', toneMark: 2 },\n { character: 'õ', originalCharacter: 'o', toneMark: 3 },\n { character: 'ỏ', originalCharacter: 'o', toneMark: 4 },\n { character: 'ó', originalCharacter: 'o', toneMark: 5 },\n { character: 'ọ', originalCharacter: 'o', toneMark: 6 },\n\n { character: 'ô', originalCharacter: 'ô', toneMark: 1 },\n { character: 'ồ', originalCharacter: 'ô', toneMark: 2 },\n { character: 'ỗ', originalCharacter: 'ô', toneMark: 3 },\n { character: 'ổ', originalCharacter: 'ô', toneMark: 4 },\n { character: 'ố', originalCharacter: 'ô', toneMark: 5 },\n { character: 'ộ', originalCharacter: 'ô', toneMark: 6 },\n\n { character: 'ơ', originalCharacter: 'ơ', toneMark: 1 },\n { character: 'ờ', originalCharacter: 'ơ', toneMark: 2 },\n { character: 'ỡ', originalCharacter: 'ơ', toneMark: 3 },\n { character: 'ở', originalCharacter: 'ơ', toneMark: 4 },\n { character: 'ớ', originalCharacter: 'ơ', toneMark: 5 },\n { character: 'ợ', originalCharacter: 'ơ', toneMark: 6 },\n\n { character: 'u', originalCharacter: 'u', toneMark: 1 },\n { character: 'ù', originalCharacter: 'u', toneMark: 2 },\n { character: 'ũ', originalCharacter: 'u', toneMark: 3 },\n { character: 'ủ', originalCharacter: 'u', toneMark: 4 },\n { character: 'ú', originalCharacter: 'u', toneMark: 5 },\n { character: 'ụ', originalCharacter: 'u', toneMark: 6 },\n\n { character: 'ư', originalCharacter: 'ư', toneMark: 1 },\n { character: 'ừ', originalCharacter: 'ư', toneMark: 2 },\n { character: 'ữ', originalCharacter: 'ư', toneMark: 3 },\n { character: 'ử', originalCharacter: 'ư', toneMark: 4 },\n { character: 'ứ', originalCharacter: 'ư', toneMark: 5 },\n { character: 'ự', originalCharacter: 'ư', toneMark: 6 },\n\n { character: 'y', originalCharacter: 'y', toneMark: 1 },\n { character: 'ỳ', originalCharacter: 'y', toneMark: 2 },\n { character: 'ỹ', originalCharacter: 'y', toneMark: 3 },\n { character: 'ỷ', originalCharacter: 'y', toneMark: 4 },\n { character: 'ý', originalCharacter: 'y', toneMark: 5 },\n { character: 'ỵ', originalCharacter: 'y', toneMark: 6 },\n]\n\nfunction transcriptToString(transcript: PhoneticTranscript): string {\n if (!transcript.main || !transcript.toneMark) {\n throw new Error('Invalid phonetic transcript')\n }\n\n return (\n (((transcript.initial?.replaceAll('-', '')) ?? '') || '')\n + (((transcript?.medial?.replaceAll('-', '')) ?? '') || '')\n + transcript.main.replaceAll('-', '')\n + (((transcript.final?.replaceAll('-', '')) ?? '') || '')\n + transcript.toneMark.toString()\n )\n}\n\nfunction buildPhoneticTranscript(word: string): PhoneticTranscript {\n word = word.toLowerCase()\n\n const transcript = {\n toneMark: 1,\n } as PhoneticTranscript\n\n // NOTE: Check tone mark\n toneMarkList.forEach((toneMark) => {\n if (toneMark.toneMark !== 1 && word.includes(toneMark.character)) {\n transcript.toneMark = toneMark.toneMark\n\n word = word.replace(toneMark.character, toneMark.originalCharacter)\n }\n })\n\n // NOTE: Check initial\n initialList.forEach((initial) => {\n if (\n word.startsWith(initial.character)\n && word.length - initial.character.length > 0\n ) {\n transcript.initial = initial.phoneme\n transcript.initialCharacter = initial.character\n\n word = word.slice(initial.character.length)\n }\n })\n\n // NOTE: Check final\n finalList.forEach((final) => {\n if (\n word.endsWith(final.character)\n && word.length - final.character.length > 0\n ) {\n transcript.final = final.phoneme\n transcript.finalCharacter = final.character\n\n word = word.slice(0, word.length - final.character.length)\n }\n })\n\n // NOTE: Check medial\n if (word.length > 1 && word !== 'oo') {\n if (\n word.startsWith('u')\n && (transcript.initialCharacter === 'q'\n || ['y', 'i', 'ê', 'ơ', 'â', 'iê', 'yê', 'ia', 'ya'].includes(\n word.slice(1),\n ))\n ) {\n transcript.medial = medialList[0]!.phoneme\n transcript.medialCharacter = medialList[0]!.character\n\n word = word.slice(1)\n }\n else if (word.startsWith('o')) {\n transcript.medial = medialList[1]!.phoneme\n transcript.medialCharacter = medialList[1]!.character\n\n word = word.slice(1)\n }\n }\n\n if (\n word === 'o'\n && (transcript.finalCharacter !== undefined)\n && ['nh', 'ng', 'ch', 'c'].includes(transcript.finalCharacter)\n ) {\n const main = mainList.filter(main => main.phoneme === '-ɔ-')\n\n transcript.main = main[0]!.phoneme\n transcript.mainCharacter = main[0]!.character\n\n word = word.slice(1)\n }\n else {\n // NOTE: Check main\n mainList.forEach((main) => {\n if (word === main.character) {\n transcript.main = main.phoneme\n transcript.mainCharacter = main.character\n\n word = word.slice(main.character.length)\n }\n })\n }\n\n return transcript\n}\n\nexport function phoneticTranscriptWord(word: string) {\n return word.replaceAll(/\\p{L}+/gu, (word) => {\n try {\n return transcriptToString(buildPhoneticTranscript(word))\n }\n catch {\n return word\n }\n })\n}\n\nexport function phoneticTranscriptSentence(sentence: string): string {\n return sentence\n .split(' ')\n .map(word => phoneticTranscriptWord(word))\n .join(' ')\n}\n"],"mappings":";;AA0BA,MAAM,cAAc;CAClB;EAAE,SAAS;EAAM,WAAW;CAAI;CAChC;EAAE,SAAS;EAAM,WAAW;CAAI;CAChC;EAAE,SAAS;EAAM,WAAW;CAAK;CAEjC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAO,WAAW;CAAK;CAElC;EAAE,SAAS;EAAM,WAAW;CAAK;CAEjC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAK;CAEjC;EAAE,SAAS;EAAM,WAAW;EAAO,MAAM;GAAC;GAAO;GAAO;GAAO;EAAM;CAAE;CACvE;EAAE,SAAS;EAAM,WAAW;CAAK;CAEjC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAI;CAChC;EAAE,SAAS;EAAM,WAAW;CAAK;CAEjC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAI;CAChC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAK;CAEjC;EAAE,SAAS;EAAM,WAAW;CAAK;CAEjC;EAAE,SAAS;EAAM,WAAW;EAAK,MAAM;GAAC;GAAO;GAAO;GAAO;EAAM;CAAE;CACrE;EAAE,SAAS;EAAM,WAAW;EAAK,QAAQ,CAAC,MAAM;CAAE;CAClD;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;EAAM,MAAM;GAAC;GAAO;GAAO;GAAO;EAAM;CAAE;CACtE;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAI;AAClC;AAEA,MAAM,aAAa,CACjB;CACE,SAAS;CACT,WAAW;CACX,SAAS,CAAC,IAAI;CACd,MAAM;EAAC;EAAO;EAAO;EAAO;EAAQ;CAAM;AAC5C,GACA;CACE,SAAS;CACT,WAAW;AACb,CACF;AAEA,MAAM,WAAW;CACf;EACE,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,QAAQ,MAAM;EACvB,SAAS,CAAC,MAAM;EAChB,OAAO,CAAC,MAAM;CAChB;CACA;EAAE,SAAS;EAAO,WAAW;CAAI;CAEjC;EAAE,SAAS;EAAO,WAAW;CAAI;CAEjC;EAAE,SAAS;EAAO,WAAW;CAAI;CAEjC;EAAE,SAAS;EAAO,WAAW;CAAI;CAEjC;EAAE,SAAS;EAAO,WAAW;CAAI;CAEjC;EAAE,SAAS;EAAO,WAAW;CAAI;CAEjC;EAAE,SAAS;EAAO,WAAW;CAAI;CAEjC;EAAE,SAAS;EAAO,WAAW;CAAI;CACjC;EAAE,SAAS;EAAO,WAAW;CAAK;CAElC;EAAE,SAAS;EAAO,WAAW;CAAI;CACjC;EAAE,SAAS;EAAO,WAAW;CAAK;CAElC;EAAE,SAAS;EAAQ,WAAW;CAAI;CAElC;EAAE,SAAS;EAAQ,WAAW;CAAI;CAElC;EAAE,SAAS;EAAO,WAAW;EAAK,OAAO,CAAC,MAAM,IAAI;CAAE;CACtD;EAAE,SAAS;EAAO,WAAW;CAAI;CAEjC;EAAE,SAAS;EAAQ,WAAW;EAAK,OAAO,CAAC,MAAM,IAAI;CAAE;CAEvD;EAAE,SAAS;EAAQ,WAAW;EAAM,UAAU,CAAC,MAAM;EAAG,QAAQ,CAAC,MAAM;CAAE;CACzE;EACE,SAAS;EACT,WAAW;EACX,UAAU,CAAC,MAAM;EACjB,QAAQ,CAAC,MAAM;EACf,SAAS,CAAC,MAAM;CAClB;CACA;EAAE,SAAS;EAAQ,WAAW;EAAM,OAAO,CAAC,MAAM;EAAG,QAAQ,CAAC,MAAM;CAAE;CACtE;EAAE,SAAS;EAAQ,WAAW;EAAM,OAAO,CAAC,MAAM;EAAG,QAAQ,CAAC,MAAM;CAAE;CAEtE;EAAE,SAAS;EAAQ,WAAW;EAAM,UAAU,CAAC,MAAM;CAAE;CACvD;EAAE,SAAS;EAAQ,WAAW;EAAM,OAAO,CAAC,MAAM;CAAE;CAEpD;EAAE,SAAS;EAAQ,WAAW;EAAM,UAAU,CAAC,MAAM;CAAE;CACvD;EAAE,SAAS;EAAQ,WAAW;EAAM,OAAO,CAAC,MAAM;CAAE;AACtD;AAEA,MAAM,YAAY;CAChB;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;EAAM,MAAM;GAAC;GAAO;GAAO;EAAM;CAAE;CAC/D;EAAE,SAAS;EAAM,WAAW;CAAK;CAEjC;EAAE,SAAS;EAAM,WAAW;EAAM,MAAM;GAAC;GAAO;GAAO;EAAM;CAAE;CAC/D;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;EAAK,MAAM,CAAC,OAAO,KAAK;CAAE;CACtD;EAAE,SAAS;EAAM,WAAW;CAAI;CAEhC;EAAE,SAAS;EAAM,WAAW;EAAK,MAAM,CAAC,OAAO,MAAM;CAAE;CACvD;EAAE,SAAS;EAAM,WAAW;CAAI;AAClC;AAEA,MAAM,eAAe;CACnB;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;AACxD;AAEA,SAAS,mBAAmB,YAAwC;CAClE,IAAI,CAAC,WAAW,QAAQ,CAAC,WAAW,UAClC,MAAM,IAAI,MAAM,6BAA6B;CAG/C,SACK,WAAW,SAAS,WAAW,KAAK,EAAE,KAAM,OAAO,QACjD,YAAY,QAAQ,WAAW,KAAK,EAAE,KAAM,OAAO,MACtD,WAAW,KAAK,WAAW,KAAK,EAAE,MAC/B,WAAW,OAAO,WAAW,KAAK,EAAE,KAAM,OAAO,MACpD,WAAW,SAAS,SAAS;AAEnC;AAEA,SAAS,wBAAwB,MAAkC;CACjE,OAAO,KAAK,YAAY;CAExB,MAAM,aAAa,EACjB,UAAU,EACZ;CAGA,aAAa,SAAS,aAAa;EACjC,IAAI,SAAS,aAAa,KAAK,KAAK,SAAS,SAAS,SAAS,GAAG;GAChE,WAAW,WAAW,SAAS;GAE/B,OAAO,KAAK,QAAQ,SAAS,WAAW,SAAS,iBAAiB;EACpE;CACF,CAAC;CAGD,YAAY,SAAS,YAAY;EAC/B,IACE,KAAK,WAAW,QAAQ,SAAS,KAC9B,KAAK,SAAS,QAAQ,UAAU,SAAS,GAC5C;GACA,WAAW,UAAU,QAAQ;GAC7B,WAAW,mBAAmB,QAAQ;GAEtC,OAAO,KAAK,MAAM,QAAQ,UAAU,MAAM;EAC5C;CACF,CAAC;CAGD,UAAU,SAAS,UAAU;EAC3B,IACE,KAAK,SAAS,MAAM,SAAS,KAC1B,KAAK,SAAS,MAAM,UAAU,SAAS,GAC1C;GACA,WAAW,QAAQ,MAAM;GACzB,WAAW,iBAAiB,MAAM;GAElC,OAAO,KAAK,MAAM,GAAG,KAAK,SAAS,MAAM,UAAU,MAAM;EAC3D;CACF,CAAC;CAGD,IAAI,KAAK,SAAS,KAAK,SAAS,MAAM;EACpC,IACE,KAAK,WAAW,GAAG,MACf,WAAW,qBAAqB,OAC/B;GAAC;GAAK;GAAK;GAAK;GAAK;GAAK;GAAM;GAAM;GAAM;EAAI,CAAC,CAAC,SACnD,KAAK,MAAM,CAAC,CACd,IACF;GACA,WAAW,SAAS,WAAW,EAAE,CAAE;GACnC,WAAW,kBAAkB,WAAW,EAAE,CAAE;GAE5C,OAAO,KAAK,MAAM,CAAC;EACrB,OACK,IAAI,KAAK,WAAW,GAAG,GAAG;GAC7B,WAAW,SAAS,WAAW,EAAE,CAAE;GACnC,WAAW,kBAAkB,WAAW,EAAE,CAAE;GAE5C,OAAO,KAAK,MAAM,CAAC;EACrB;CACF;CAEA,IACE,SAAS,OACL,WAAW,mBAAmB,KAAA,KAC/B;EAAC;EAAM;EAAM;EAAM;CAAG,CAAC,CAAC,SAAS,WAAW,cAAc,GAC7D;EACA,MAAM,OAAO,SAAS,QAAO,SAAQ,KAAK,YAAY,MAAM;EAE5D,WAAW,OAAO,KAAK,EAAE,CAAE;EAC3B,WAAW,gBAAgB,KAAK,EAAE,CAAE;EAEpC,OAAO,KAAK,MAAM,CAAC;CACrB,OAGE,SAAS,SAAS,SAAS;EACzB,IAAI,SAAS,KAAK,WAAW;GAC3B,WAAW,OAAO,KAAK;GACvB,WAAW,gBAAgB,KAAK;GAEhC,OAAO,KAAK,MAAM,KAAK,UAAU,MAAM;EACzC;CACF,CAAC;CAGH,OAAO;AACT;AAEA,SAAgB,uBAAuB,MAAc;CACnD,OAAO,KAAK,WAAW,aAAa,SAAS;EAC3C,IAAI;GACF,OAAO,mBAAmB,wBAAwB,IAAI,CAAC;EACzD,QACM;GACJ,OAAO;EACT;CACF,CAAC;AACH;AAEA,SAAgB,2BAA2B,UAA0B;CACnE,OAAO,SACJ,MAAM,GAAG,CAAC,CACV,KAAI,SAAQ,uBAAuB,IAAI,CAAC,CAAC,CACzC,KAAK,GAAG;AACb"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,27 +1,29 @@
|
|
|
1
|
+
//#region src/phonetic_transcript/phonetic_transcript.d.ts
|
|
1
2
|
type PhoneticTranscript = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
main: string;
|
|
4
|
+
mainCharacter: string;
|
|
5
|
+
medial?: string;
|
|
6
|
+
medialCharacter?: string;
|
|
7
|
+
initial?: string;
|
|
8
|
+
initialCharacter?: string;
|
|
9
|
+
final?: string;
|
|
10
|
+
finalCharacter?: string;
|
|
11
|
+
toneMark: number;
|
|
11
12
|
};
|
|
12
13
|
type Constraint = {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
14
|
+
phoneme: string;
|
|
15
|
+
character: string;
|
|
16
|
+
initial?: Array<string>;
|
|
17
|
+
notInitial?: Array<string>;
|
|
18
|
+
medial?: Array<string>;
|
|
19
|
+
notMedial?: Array<string>;
|
|
20
|
+
main?: Array<string>;
|
|
21
|
+
notMain?: Array<string>;
|
|
22
|
+
final?: Array<string>;
|
|
23
|
+
notFinal?: Array<string>;
|
|
23
24
|
};
|
|
24
|
-
declare
|
|
25
|
-
declare
|
|
26
|
-
|
|
27
|
-
export {
|
|
25
|
+
declare function phoneticTranscriptWord(word: string): string;
|
|
26
|
+
declare function phoneticTranscriptSentence(sentence: string): string;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { Constraint, PhoneticTranscript, phoneticTranscriptSentence, phoneticTranscriptWord };
|
|
29
|
+
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/phonetic_transcript/phonetic_transcript.d.ts
|
|
2
|
+
type PhoneticTranscript = {
|
|
3
|
+
main: string;
|
|
4
|
+
mainCharacter: string;
|
|
5
|
+
medial?: string;
|
|
6
|
+
medialCharacter?: string;
|
|
7
|
+
initial?: string;
|
|
8
|
+
initialCharacter?: string;
|
|
9
|
+
final?: string;
|
|
10
|
+
finalCharacter?: string;
|
|
11
|
+
toneMark: number;
|
|
12
|
+
};
|
|
13
|
+
type Constraint = {
|
|
14
|
+
phoneme: string;
|
|
15
|
+
character: string;
|
|
16
|
+
initial?: Array<string>;
|
|
17
|
+
notInitial?: Array<string>;
|
|
18
|
+
medial?: Array<string>;
|
|
19
|
+
notMedial?: Array<string>;
|
|
20
|
+
main?: Array<string>;
|
|
21
|
+
notMain?: Array<string>;
|
|
22
|
+
final?: Array<string>;
|
|
23
|
+
notFinal?: Array<string>;
|
|
24
|
+
};
|
|
25
|
+
declare function phoneticTranscriptWord(word: string): string;
|
|
26
|
+
declare function phoneticTranscriptSentence(sentence: string): string;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { Constraint, PhoneticTranscript, phoneticTranscriptSentence, phoneticTranscriptWord };
|
|
29
|
+
//# sourceMappingURL=index.d.mts.map
|