Module:Hepburner
Romanizes double vowels per the standard outlined in Hepburn Romanization.
Implemented in Template:Hepburn - Please use this instead of using this directly. It enforces subst for this *very* costly module.
Any double vowels will get converted to a long vowel, ou will get converted to ō.
{{#invoke:Hepburner|toHepburn|Kinou}} => Kinō
{{#invoke:Hepburner|toHepburn|Ooki}} => Ōki
{{#invoke:Hepburner|toHepburn|kara-age}} => kara-age
{{#invoke:Hepburner|toHepburn|sakkaa}} => sakkā
{{#invoke:Hepburner|toHepburn|raamen}} => rāmen
{{#invoke:Hepburner|toHepburn|ヴィデオ}} => ヴィデオ
{{#invoke:Hepburner|toHepburn|いこう}} => いこう
{{#invoke:Hepburner|toHepburn|やった}} => やった
{{#invoke:Hepburner|toHepburn|いきましょう}} => いきましょう
{{#invoke:Hepburner|toHepburn|ちゅうにびょう}} => ちゅうにびょう
{{#invoke:Hepburner|toHepburn|つづく}} => つづく
note: oU aA or the like will break it. You should never, ever, ever do this regardless, but note that is a limitation. If you need that, add it to the list, following the current pattern.
require('strict');
-- Converts romanji input to modified hepburn, I recommend subst:ing
-- standard long vowel patterns
local diacritics = {
["aa"] = "ā",
["uu"] = "ū",
["ee"] = "ē",
["oo"] = "ō",
["ou"] = "ō",
["Aa"] = "Ā",
["Uu"] = "Ū",
["Ee"] = "Ē",
["Oo"] = "Ō",
["Ou"] = "Ō",
["AA"] = "Ā",
["UU"] = "Ū",
["EE"] = "Ē",
["OO"] = "Ō",
["OU"] = "Ō"
}
local p = {}
--input: 1:1 transliterated romanji
function p.toHepburn(frame)
local romanji = frame.args[1]
for target, replacement in pairs(diacritics) do
romanji = romanji:gsub(target, replacement)
end
return romanji
end
return p