local jp = { }
local ending = {
normal = { "く", "ぐ", "す", "つ", "ぬ", "ぶ", "む", "る", "う" },
kusuruutsu = { "く", "す", "つ", "る", "う" },
masu = { "き", "ぎ", "し", "ち", "に", "び", "み", "り", "い" },
te = { "い", "い", "し", "っ", "ん", "ん", "ん", "っ", "っ" },
teConj = { "て", "で", "て", "て", "で", "で", "で", "て", "て" },
taConj = { "た", "だ", "た", "た", "だ", "だ", "だ", "た", "た" },
nai = { "か", "が", "さ", "た", "な", "ば", "ま", "ら", "わ" }
}
local ichidan = { "い", "き", "し", "ち", "に", "ひ", "み", "り", "え", "け", "せ", "て", "ね", "へ", "め", "れ" }
function jp.addTermi (termination, conjugation) -- 어미
local i = 1
while i <= 5 do
if ending.kusuruutsu[i] == termination then return conjugation end
i = i + 1
end
if conjugation == "て" then return "で"
elseif conjugation == "ます" then return "ます"
elseif conjugation == "た" then return "だ"
else return "ない" end
end
function jp.convert(termination, conjugation)
if conjugation == "て" or conjugation == "た" then
if "く" == termination then return "い"
elseif "ぐ" == termination then return "い"
elseif "す" == termination then return "し"
elseif "ぬ" == termination then return "ん"
elseif "ぶ" == termination then return "ん"
elseif "む" == termination then return "ん"
elseif "る" == termination then return "っ"
elseif "う" == termination then return "っ"
elseif "つ" == termination then return "っ"
else end
elseif conjugation == "ます" then
if "く" == termination then return "き"
elseif "ぐ" == termination then return "ぎ"
elseif "す" == termination then return "し"
elseif "ぬ" == termination then return "に"
elseif "ぶ" == termination then return "び"
elseif "む" == termination then return "み"
elseif "る" == termination then return "り"
elseif "う" == termination then return "い"
elseif "つ" == termination then return "ち"
else end
else --ない
if "く" == termination then return "か"
elseif "ぐ" == termination then return "が"
elseif "す" == termination then return "さ"
elseif "ぬ" == termination then return "な"
elseif "ぶ" == termination then return "ば"
elseif "む" == termination then return "ま"
elseif "る" == termination then return "ら"
elseif "う" == termination then return "わ"
elseif "つ" == termination then return "た"
else end
end
end
function jp.ruby(kanji, furigana)
return "<ruby><rb>"..kanji..[[</rb><rt style{{=}}"font-size: 70%">]]..furigana.."</rt></ruby>"
end
function jp.main(frame)
local kanji = frame.args['kanji'] --"遊" --한자
local furigana = frame.args['furigana'] -- "あそ" --후리가나
local hiragana = frame.args['hiragana'] -- "あそぶ" --히라가나
local conjugation = frame.args['conjugation'] --"て" --활용
local verb_group = frame.args['verb_group']
local termination --"" --어미
local okurigana --"" --오쿠리가나
if (kanji == "来") then
if conjugation == "ない" then
furigana = "こ"
else
furigana = "き"
end
return jp.ruby(kanji, furigana)..conjugation
elseif verb_group == "1" then
local temp = string.gsub(string.gsub( hiragana, furigana, "" ), "る", "")
if conjugation == "て" then temp = temp.."て"
elseif conjugation == "ます" then temp = temp.."ます"
elseif conjugation == "た" then temp = temp.."た"
else temp = temp.."ない" end
return "<ruby><rb>"..kanji..[[</rb><rt style{{=}}"font-size: 70%">]]..furigana.."</rt></ruby>"..temp
elseif hiragana == 2 and furigana == 1 then
termination = string.gsub( hiragana, furigana, "" )
return jp.ruby(kanji, furigana)..jp.convert(termination, conjugation)..jp.addTermi(termination, conjugation)
else
okurigana = string.gsub( hiragana, furigana, "" )
if string.len( okurigana ) > 1 then
termination = string.sub( okurigana, 0, - 1)
else
termination = okurigana
end
return jp.ruby(kanji, furigana)..jp.convert(termination, conjugation)..jp.addTermi(termination, conjugation)
end
end
return jp