Pumunta sa nilalaman

Module:ja-shift

Mula Wiksiyonaryo


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