local jp = { }
local godan = {
normal = { "く", "ぐ", "す", "つ", "ぬ", "ぶ", "む", "る", "う" },
kusuruutsu = { "く", "す", "つ", "る", "う" },
masu = { "き", "ぎ", "し", "ち", "に", "び", "み", "り", "い" },
te = { "い", "い", "し", "っ", "ん", "ん", "ん", "っ", "っ" },
teConj = { "て", "で", "て", "て", "で", "で", "で", "て", "て" },
taConj = { "た", "だ", "た", "た", "だ", "だ", "だ", "た", "た" },
nai = { "か", "が", "さ", "た", "な", "ば", "ま", "ら", "わ" }
}
local ichidan = { "い", "き", "ぎ", "し", "じ", "ち", "に", "ひ", "び", "み", "り", "え", "け", "げ", "せ", "ぜ", "て", "で", "ね", "へ", "べ", "め", "れ" }
function jp.addTermi (termination, conjugation) -- 어미
for i=1, 5 do
if godan.kusuruutsu[i] == termination then return conjugation end
end
if conjugation == "て" then return "で"
elseif conjugation == "ます" then return "ます"
elseif conjugation == "た" then return "だ"
else return "ない" end
end
function jp.convert(termination, conjugation)
local i
if conjugation == "て" or conjugation == "た" then
for i=1, #(godan.normal) do
if godan.normal[i] == termination then
return "error1"
end
end
return "error"
elseif conjugation == "ます" then
for i=1, #(godan.normal) do
if godan.normal[i] == termination then
return "error1"
end
end
return "error"
else --ない
for i=1, #(godan.normal) do
if godan.normal[i] == termination then
return "error1"
end
end
return "error"
end
end
function jp.ruby(kanji, furigana)
return "<ruby><rb>"..kanji..[[</rb><rt style{{=}}"font-size: 70%">]]..furigana.."</rt></ruby>"
end
function jp.isIchidan(kana)
for i = 1, #ichidan do
if ichidan[i] == kana then
return true
end
end
return false
end
function jp.godan_ichidan( hiragana )
endofstr = string.sub( hiragana, -1, -1 )
endofstr2 = string.sub( hiragana, -2, -2 )
for i = 1, #godan.normal do
if endofstr == "る" then
for i = 1, #ichidan do
if ichidan[i] == endofstr2 then return "ichidan" end
end
return "godan"
elseif godan.normal[i] == endofstr then
return "godan"
end
end
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 --"" --오쿠리가나
okurigana = string.gsub( hiragana, furigana, "" )
if (kanji == "来") then
if conjugation == "ない" then
furigana = "こ"
else
furigana = "き"
end
return jp.ruby(kanji, furigana)..conjugation
elseif kanji == nil then
elseif string.len( hiragana ) == 2 then
if jp.godan_ichidan(hiragana) == "ichidan" then
return jp.ruby(kanji, furigana)..conjugation
else
return jp.ruby(kanji, furigana)..jp.convert(okurigana, conjugation)..jp.addTermi(okurigana, conjugation)
end
else
-- べる「食べる」、ぶ[遊ぶ]
if jp.godan_ichidan(hiragana) == "ichidan" then
return jp.ruby(kanji, furigana).. string.sub( okurigana, 0, -2 )..conjugation
else
return jp.ruby(kanji, furigana)..jp.convert(string.sub( hiragana, -1, -1 ), conjugation)..jp.addTermi(string.sub( hiragana, -1, -1 ), conjugation)
end
end
end
return jp