mirror of
https://github.com/kmein/niveum
synced 2026-03-18 19:11:08 +01:00
372 lines
3.4 KiB
JavaScript
Executable File
372 lines
3.4 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
||
"use strict";
|
||
const { createInterface } = require("readline");
|
||
|
||
const xsampa = [
|
||
"_R_F",
|
||
"J\\_<",
|
||
"_H_T",
|
||
"G\\_<",
|
||
"_B_L",
|
||
"|\\|\\",
|
||
"r\\`",
|
||
"<R>",
|
||
"g_<",
|
||
"<F>",
|
||
"d_<",
|
||
"b_<",
|
||
"_?\\",
|
||
"z\\",
|
||
"z`",
|
||
"X\\",
|
||
"x\\",
|
||
"_x",
|
||
"_X",
|
||
"_w",
|
||
"v\\",
|
||
"_v",
|
||
"U\\",
|
||
"t`",
|
||
"_t",
|
||
"_T",
|
||
"s\\",
|
||
"s`",
|
||
"r\\",
|
||
"r`",
|
||
"_r",
|
||
"R\\",
|
||
"_R",
|
||
"_q",
|
||
"p\\",
|
||
"_o",
|
||
"O\\",
|
||
"_O",
|
||
"n`",
|
||
"_n",
|
||
"N\\",
|
||
"_N",
|
||
"_m",
|
||
"M\\",
|
||
"_M",
|
||
"l\\",
|
||
"l`",
|
||
"_l",
|
||
"L\\",
|
||
"_L",
|
||
"_k",
|
||
"K\\",
|
||
"j\\",
|
||
"_j",
|
||
"J\\",
|
||
"I\\",
|
||
"h\\",
|
||
"_h",
|
||
"H\\",
|
||
"_H",
|
||
"G\\",
|
||
"_G",
|
||
"_F",
|
||
"_e",
|
||
"d`",
|
||
"_d",
|
||
"_c",
|
||
"B\\",
|
||
"_B",
|
||
"_a",
|
||
"_A",
|
||
"3\\",
|
||
"_0",
|
||
"@\\",
|
||
"?\\",
|
||
"!\\",
|
||
":\\",
|
||
"-\\",
|
||
"_+",
|
||
"_\\",
|
||
"_}",
|
||
'_"',
|
||
"_/",
|
||
"_-",
|
||
"_>",
|
||
"_=",
|
||
"_~",
|
||
"_^",
|
||
"|\\",
|
||
"||",
|
||
">\\",
|
||
"=\\",
|
||
"<\\",
|
||
"Z",
|
||
"z",
|
||
"y",
|
||
"Y",
|
||
"X",
|
||
"x",
|
||
"w",
|
||
"W",
|
||
"v",
|
||
"V",
|
||
"u",
|
||
"U",
|
||
"T",
|
||
"t",
|
||
"s",
|
||
"S",
|
||
"r",
|
||
"R",
|
||
"q",
|
||
"Q",
|
||
"p",
|
||
"P",
|
||
"O",
|
||
"o",
|
||
"N",
|
||
"n",
|
||
"m",
|
||
"M",
|
||
"l",
|
||
"L",
|
||
"k",
|
||
"K",
|
||
"j",
|
||
"J",
|
||
"i",
|
||
"I",
|
||
"h",
|
||
"H",
|
||
"g",
|
||
"G",
|
||
"f",
|
||
"F",
|
||
"E",
|
||
"e",
|
||
"@",
|
||
"D",
|
||
"d",
|
||
"C",
|
||
"c",
|
||
"B",
|
||
"b",
|
||
"{",
|
||
"a",
|
||
"A",
|
||
"9",
|
||
"8",
|
||
"7",
|
||
"6",
|
||
"5",
|
||
"4",
|
||
"3",
|
||
"2",
|
||
"1",
|
||
"%",
|
||
"&",
|
||
"}",
|
||
'"',
|
||
"'",
|
||
".",
|
||
"?",
|
||
"!",
|
||
":",
|
||
"|",
|
||
"=",
|
||
"~",
|
||
"^",
|
||
"`"
|
||
];
|
||
|
||
const ipa = [
|
||
" ᷈",
|
||
"ʄ",
|
||
" ᷄",
|
||
"ʛ",
|
||
" ᷅",
|
||
"ǁ",
|
||
"ɻ",
|
||
"↗",
|
||
"ɠ",
|
||
"↘",
|
||
"ɗ",
|
||
"ɓ",
|
||
"ˤ",
|
||
"ʑ",
|
||
"ʐ",
|
||
"ħ",
|
||
"ɧ",
|
||
" ̽",
|
||
" ̆",
|
||
"ʷ",
|
||
"ʋ",
|
||
" ̬",
|
||
"ᵿ",
|
||
"ʈ",
|
||
" ̤",
|
||
" ̋",
|
||
"ɕ",
|
||
"ʂ",
|
||
"ɹ",
|
||
"ɽ",
|
||
" ̝",
|
||
"ʀ",
|
||
" ̌",
|
||
" ̙",
|
||
"ɸ",
|
||
" ̞",
|
||
"ʘ",
|
||
" ̹",
|
||
"ɳ",
|
||
"ⁿ",
|
||
"ɴ",
|
||
" ̼",
|
||
" ̻",
|
||
"ɰ",
|
||
" ̄",
|
||
"ɺ",
|
||
"ɭ",
|
||
"ˡ",
|
||
"ʟ",
|
||
" ̀",
|
||
" ̰",
|
||
"ɮ",
|
||
"ʝ",
|
||
"ʲ",
|
||
"ɟ",
|
||
"ᵻ",
|
||
"ɦ",
|
||
"ʰ",
|
||
"ʜ",
|
||
" ́",
|
||
"ɢ",
|
||
"ˠ",
|
||
" ̂",
|
||
" ̴",
|
||
"ɖ",
|
||
" ̪",
|
||
" ̜",
|
||
"ʙ",
|
||
" ̏",
|
||
" ̺",
|
||
" ̘",
|
||
"ɞ",
|
||
" ̥",
|
||
"ɘ",
|
||
"ʕ",
|
||
"ǃ",
|
||
"ˑ",
|
||
"‿",
|
||
" ̟",
|
||
"̂",
|
||
" ̚",
|
||
" ̈",
|
||
"̌",
|
||
" ̠",
|
||
"ʼ",
|
||
" ̩",
|
||
"̃",
|
||
" ̯",
|
||
"ǀ",
|
||
"‖",
|
||
"ʡ",
|
||
"ǂ",
|
||
"ʢ",
|
||
"ʒ",
|
||
"z",
|
||
"y",
|
||
"ʏ",
|
||
"χ",
|
||
"x",
|
||
"w",
|
||
"ʍ",
|
||
"v",
|
||
"ʌ",
|
||
"u",
|
||
"ʊ",
|
||
"θ",
|
||
"t",
|
||
"s",
|
||
"ʃ",
|
||
"r",
|
||
"ʁ",
|
||
"q",
|
||
"ɒ",
|
||
"p",
|
||
"ʋ",
|
||
"ɔ",
|
||
"o",
|
||
"ŋ",
|
||
"n",
|
||
"m",
|
||
"ɯ",
|
||
"l",
|
||
"ʎ",
|
||
"k",
|
||
"ɬ",
|
||
"j",
|
||
"ɲ",
|
||
"i",
|
||
"ɪ",
|
||
"h",
|
||
"ɥ",
|
||
"ɡ",
|
||
"ɣ",
|
||
"f",
|
||
"ɱ",
|
||
"ɛ",
|
||
"e",
|
||
"ə",
|
||
"ð",
|
||
"d",
|
||
"ç",
|
||
"c",
|
||
"β",
|
||
"b",
|
||
"æ",
|
||
"a",
|
||
"ɑ",
|
||
"œ",
|
||
"ɵ",
|
||
"ɤ",
|
||
"ɐ",
|
||
"ɫ",
|
||
"ɾ",
|
||
"ɜ",
|
||
"ø",
|
||
"ɨ",
|
||
"ˌ",
|
||
"ɶ",
|
||
"ʉ",
|
||
"ˈ",
|
||
"ʲ",
|
||
".",
|
||
"ʔ",
|
||
"ꜜ",
|
||
"ː",
|
||
"|",
|
||
"̩",
|
||
"̃",
|
||
"ꜛ",
|
||
"˞"
|
||
];
|
||
|
||
const convertChar = (inputList, outputList) => input => {
|
||
const index = inputList.findIndex(letter => letter == input);
|
||
return index ? outputList[index] : input;
|
||
};
|
||
|
||
const convertString = (inputList, outputList) => string =>
|
||
string
|
||
.split("")
|
||
.map(convertChar(inputList, outputList))
|
||
.join("");
|
||
|
||
const ipaToXsampa = convertString(ipa, xsampa);
|
||
const xsampaToIpa = convertString(xsampa, ipa);
|
||
|
||
const readlineInterface = createInterface({
|
||
input: process.stdin,
|
||
output: process.stdout,
|
||
terminal: false
|
||
});
|
||
|
||
readlineInterface.on("line", line => console.log(xsampaToIpa(line)));
|