Module:ja-shift
Itsura
- This module lacks a documentation subpage. Please create it.
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
function export.shift(a, tg, bp)
a = (a == "ichi" or a == "suru" or a == "kuru") and "る" or a
local kana = type(a) == "table" and a.args[1] or a
local target = type(a) == "table" and a.args[2] or tg
local bypass = type(a) == "table" and a.args[3] or bp
if string.len(kana:gsub("[うくぐすつぬぶむる]", "")) > 0 or string.len(kana:gsub("[うくぐすつぬぶむる]", "A")) ~= 3 then
if bypass == true then return "X" end
error("Invalid hiragana verb ending. Must be one of [うくぐすつぬぶむる].")
end
local tab = {
["う"] = {"わ", "い", "う", "え", "お"},
["く"] = {"か", "き", "く", "け", "こ"},
["ぐ"] = {"が", "ぎ", "ぐ", "げ", "ご"},
["す"] = {"さ", "し", "す", "せ", "そ"},
["つ"] = {"た", "ち", "つ", "て", "と"},
["ぬ"] = {"な", "に", "ぬ", "ね", "の"},
["ぶ"] = {"ば", "び", "ぶ", "べ", "ぼ"},
["む"] = {"ま", "み", "む", "め", "も"},
["る"] = {"ら", "り", "る", "れ", "ろ"},
}
local vowelnum = { ["a"] = 1, ["i"] = 2, ["u"] = 3, ["e"] = 4, ["o"] = 5 }
return tab[kana][vowelnum[target]]
end
function export.onbin(a, tg)
a = (a == "ichi" or a == "suru" or a == "kuru") and "る" or a
local kana = type(a) == "table" and a.args[1] or a
local target = type(a) == "table" and a.args[2] or tg
if (string.len(kana:gsub("[るうつすくぐぬぶむ]", "")) > 0 or string.len(kana:gsub("[るうつすくぐぬぶむ]", "A")) ~= 3) and kana ~= "おう" then error("Invalid hiragana verb ending. Must be one of [るうつすくぐぬぶむ].") end
local tab = {
["る"] = {"った", "って"},
["う"] = {"った", "って"},
["つ"] = {"った", "って"},
["す"] = {"した", "して"},
["く"] = {"いた", "いて"},
["ぐ"] = {"いだ", "いで"},
["ぬ"] = {"んだ", "んで"},
["ぶ"] = {"んだ", "んで"},
["む"] = {"んだ", "んで"},
["おう"] = {"うた", "うて"},
}
local vowelnum = { ["a"] = 1, ["e"] = 2 }
return tab[kana][vowelnum[target]]
end
return export