Skip to content

Instantly share code, notes, and snippets.

@Mijyuoon
Last active April 13, 2023 00:28
Show Gist options
  • Save Mijyuoon/e26062b1889460c9df1515b12170f14a to your computer and use it in GitHub Desktop.
Save Mijyuoon/e26062b1889460c9df1515b12170f14a to your computer and use it in GitHub Desktop.
Kana to rōmaji converter.
local rom = {}
rom.__index = rom
rom.load_url = "https://gist.githubusercontent.com/Mijyuoon/e26062b1889460c9df1515b12170f14a/raw/romaji.lua"
rom.subst = {
{"きゃ", "kya"}, {"きゅ", "kyu"}, {"きょ", "kyo"},
{"ぎゃ", "gya"}, {"ぎゅ", "gyu"}, {"ぎょ", "gyo"},
{"キャ", "kya"}, {"キュ", "kyu"}, {"キョ", "kyo"},
{"ギャ", "gya"}, {"ギュ", "gyu"}, {"ギョ", "gyo"},
{"しゃ", "sha"}, {"しゅ", "shu"}, {"しょ", "sho"},
{"じゃ", "ja"}, {"じゅ", "ju"}, {"じょ", "jo"},
{"シャ", "sha"}, {"シュ", "shu"}, {"ショ", "sho"},
{"ジャ", "ja"}, {"ジュ", "ju"}, {"ジョ", "jo"},
{"ちゃ", "cha"}, {"ちゅ", "chu"}, {"ちょ", "cho"},
{"ぢゃ", "ja"}, {"ぢゅ", "ju"}, {"ぢょ", "jo"},
{"チャ", "cha"}, {"チュ", "chu"}, {"チョ", "cho"},
{"ヂャ", "ja"}, {"ヂュ", "ju"}, {"ヂョ", "jo"},
{"にゃ", "nya"}, {"にゅ", "nyu"}, {"にょ", "nyo"},
{"ニャ", "nya"}, {"ニュ", "nyu"}, {"ニョ", "nyo"},
{"ひゃ", "hya"}, {"ひゅ", "hyu"}, {"ひょ", "hyo"},
{"びゃ", "bya"}, {"びゅ", "byu"}, {"びょ", "byo"},
{"ぴゃ", "pya"}, {"ぴゅ", "pyu"}, {"ぴょ", "pyo"},
{"ヒャ", "hya"}, {"ヒュ", "hyu"}, {"ヒョ", "hyo"},
{"ビャ", "bya"}, {"ビュ", "byu"}, {"ビョ", "byo"},
{"ピャ", "pya"}, {"ピュ", "pyu"}, {"ピョ", "pyo"},
{"みゃ", "mya"}, {"みゅ", "myu"}, {"みょ", "myo"},
{"ミャ", "mya"}, {"ミュ", "myu"}, {"ミョ", "myo"},
{"りゃ", "rya"}, {"りゅ", "ryu"}, {"りょ", "ryo"},
{"リャ", "rya"}, {"リュ", "ryu"}, {"リョ", "ryo"},
{"あ", "a"}, {"い", "i"}, {"う", "u"}, {"え", "e"}, {"お", "o"},
{"ア", "a"}, {"イ", "i"}, {"ウ", "u"}, {"エ", "e"}, {"オ", "o"},
{"か", "ka"}, {"き", "ki"}, {"く", "ku"}, {"け", "ke"}, {"こ", "ko"},
{"が", "ga"}, {"ぎ", "gi"}, {"ぐ", "gu"}, {"げ", "ge"}, {"ご", "go"},
{"カ", "ka"}, {"キ", "ki"}, {"ク", "ku"}, {"ケ", "ke"}, {"コ", "ko"},
{"ガ", "ga"}, {"ギ", "gi"}, {"グ", "gu"}, {"ゲ", "ge"}, {"ゴ", "go"},
{"さ", "sa"}, {"し", "shi"}, {"す", "su"}, {"せ", "se"}, {"そ", "so"},
{"ざ", "za"}, {"じ", "ji"}, {"ず", "zu"}, {"ぜ", "ze"}, {"ぞ", "zo"},
{"サ", "sa"}, {"シ", "shi"}, {"ス", "su"}, {"セ", "se"}, {"ソ", "so"},
{"ザ", "za"}, {"ジ", "ji"}, {"ズ", "zu"}, {"ゼ", "ze"}, {"ゾ", "zo"},
{"た", "ta"}, {"ち", "chi"}, {"つ", "tsu"}, {"て", "te"}, {"と", "to"},
{"だ", "da"}, {"ぢ", "ji"}, {"づ", "zu"}, {"で", "de"}, {"ど", "do"},
{"タ", "ta"}, {"チ", "chi"}, {"ツ", "tsu"}, {"テ", "te"}, {"ト", "to"},
{"ダ", "da"}, {"ヂ", "ji"}, {"ヅ", "zu"}, {"デ", "de"}, {"ド", "do"},
{"な", "na"}, {"に", "ni"}, {"ぬ", "nu"}, {"ね", "ne"}, {"の", "no"},
{"ナ", "na"}, {"ニ", "ni"}, {"ヌ", "nu"}, {"ネ", "ne"}, {"ノ", "no"},
{"は", "ha"}, {"ひ", "hi"}, {"ふ", "fu"}, {"へ", "he"}, {"ほ", "ho"},
{"ば", "ba"}, {"び", "bi"}, {"ぶ", "bu"}, {"べ", "be"}, {"ぼ", "bo"},
{"ぱ", "pa"}, {"ぴ", "pi"}, {"ぷ", "pu"}, {"ぺ", "pe"}, {"ぽ", "po"},
{"ハ", "ha"}, {"ヒ", "hi"}, {"フ", "fu"}, {"ヘ", "he"}, {"ホ", "ho"},
{"バ", "ba"}, {"ビ", "bi"}, {"ブ", "bu"}, {"ベ", "be"}, {"ボ", "bo"},
{"パ", "pa"}, {"ピ", "pi"}, {"プ", "pu"}, {"ペ", "pe"}, {"ポ", "po"},
{"ま", "ma"}, {"み", "mi"}, {"む", "mu"}, {"め", "me"}, {"も", "mo"},
{"マ", "ma"}, {"ミ", "mi"}, {"ム", "mu"}, {"メ", "me"}, {"モ", "mo"},
{"んや", "n'ya"}, {"んゆ", "n'yu"}, {"んよ", "n'yo"},
{"ンヤ", "n'ya"}, {"ンユ", "n'yu"}, {"ンヨ", "n'yo"},
{"や", "ya"}, {"ゆ", "yu"}, {"よ", "yo"},
{"ヤ", "ya"}, {"ユ", "yu"}, {"ヨ", "yo"},
{"ら", "ra"}, {"り", "ri"}, {"る", "ru"}, {"れ", "re"}, {"ろ", "ro"},
{"ラ", "ra"}, {"リ", "ri"}, {"ル", "ru"}, {"レ", "re"}, {"ロ", "ro"},
{"わ", "wa"}, {"を", "wo"},
{"ワ", "wa"}, {"ヲ", "wo"},
{"ん", "n"},
{"ン", "n"},
{"っ([^aiueo])", "%1%1"},
{"ッ([^aiueo])", "%1%1"},
{"([aiueo])ー", "%1%1"},
{" ", " "}, {"・", " "},
{"。", ". "}, {"、", ", "},
{"?", "?"}, {"!", "!"},
{"「", "\""}, {"」", "\""},
}
function rom:__call(str)
for i, sb in ipairs(self.subst) do
str = str:gsub(sb[1], sb[2])
end
return str
end
function rom:reload()
http.Fetch(self.load_url, function(data) load(data)() end)
end
me.MT.romaji = rom
me.romaji = setmetatable({}, rom)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment