Module:Lexeme-ja
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Lexeme-ja/doc
Code
local lb = require('Module:LexemeBuilder')
local p = {}
local text = lb.MultilingualText
function p.adjective(word, wordInHira, kanjiQid)
--example: word="寒い", wordInHira="さむい", kanjiQid="Q54872868"
--example: word="鬱陶しい", wordInHira="うっとうしい", kanjiQid="Q55851760,Q3595025"
if type(word) == 'table' then
if word.parent and word.parent.args and word.parent.args[1] then
word = word.parent
end
word, wordInHira, kanjiQid = word.args[1], word.args[2], word.args[3]
end
local entity = lb.newLexeme("Q5287", "Q34698", text({["ja"]=word, ["ja-hira"]=wordInHira}))
function mizen(word)
return string.gsub(word, "い$", "かろ")
end
function renyo(word)
return string.gsub(word, "い$", "かっ")
end
function renyo2(word)
return string.gsub(word, "い$", "く")
end
function shushi(word)
return string.gsub(word, "い$", "い")
end
function rentai(word)
return string.gsub(word, "い$", "い")
end
function katei(word)
return string.gsub(word, "い$", "けれ")
end
function gokan(word)
return string.gsub(word, "い$", "")
end
entity=lb.addForm(entity,lb.newForm(text({["ja"]=mizen(word), ["ja-hira"]=mizen(wordInHira)}), "Q15737187"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=renyo(word), ["ja-hira"]=renyo(wordInHira)}), "Q2888577"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=renyo2(word), ["ja-hira"]=renyo2(wordInHira)}), "Q2888577"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=shushi(word), ["ja-hira"]=shushi(wordInHira)}), "Q2898727"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=rentai(word), ["ja-hira"]=rentai(wordInHira)}), "Q53608953"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=katei(word), ["ja-hira"]=katei(wordInHira)}), "Q53609593"))
entity=lb.addClaim(entity,lb.newClaim("P5187", lb.Snak("P5187", {value={text=gokan(word), language="ja"}, type="monolingualtext"})))
if kanjiQid ~= "" then
if kanjiQid:match("^[Qq]%d+$") then
entity=lb.addClaim(entity,lb.newClaim("P5425", lb.Snak("P5425", {value={["entity-type"]="item", id=kanjiQid}, type="wikibase-entityid"})))
else
local counter = 1
for id in kanjiQid:gmatch("([Qq]%d+)") do
entity=lb.addClaim(entity,lb.addQualifier(
lb.newClaim("P5425", lb.Snak("P5425", {value={["entity-type"]="item", id=id}, type="wikibase-entityid"})),
lb.Snak("P1545", {value=counter.."", type="string"})
));
counter = counter + 1
end
end
end
return lb.Export(entity)
end
function p.adjectivalNoun(word, wordInHira, kanjiQid)
--example: word="雅だ", wordInHira="みやびだ", kanjiQid="Q55814931"
--example: word="雅", wordInHira="みやび", kanjiQid="Q55814931"
if type(word) == 'table' then
if word.parent and word.parent.args and word.parent.args[1] then
word = word.parent
end
word, wordInHira, kanjiQid = word.args[1], word.args[2], word.args[3]
end
function mizen(word)
return string.gsub(word, "だ$", "だろ")
end
function renyo(word)
return string.gsub(word, "だ$", "だっ")
end
function renyo2(word)
return string.gsub(word, "だ$", "で")
end
function renyo3(word)
return string.gsub(word, "だ$", "に")
end
function shushi(word)
return string.gsub(word, "だ$", "だ")
end
function rentai(word)
return string.gsub(word, "だ$", "な")
end
function katei(word)
return string.gsub(word, "だ$", "なら")
end
function gokan(word)
return string.gsub(word, "だ$", "")
end
if not word:match("だ$") then
word, wordInHira = word .. "だ", wordInHira .. "だ"
end
local entity = lb.newLexeme("Q5287", "Q1091269", text({["ja"]=gokan(word), ["ja-hira"]=gokan(wordInHira)}))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=mizen(word), ["ja-hira"]=mizen(wordInHira)}), "Q15737187"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=renyo(word), ["ja-hira"]=renyo(wordInHira)}), "Q2888577"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=renyo2(word), ["ja-hira"]=renyo2(wordInHira)}), "Q2888577"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=renyo3(word), ["ja-hira"]=renyo3(wordInHira)}), "Q2888577"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=shushi(word), ["ja-hira"]=shushi(wordInHira)}), "Q2898727"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=rentai(word), ["ja-hira"]=rentai(wordInHira)}), "Q53608953"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=katei(word), ["ja-hira"]=katei(wordInHira)}), "Q53609593"))
entity=lb.addClaim(entity,lb.newClaim("P5187", lb.Snak("P5187", {value={text=gokan(word), language="ja"}, type="monolingualtext"})))
if kanjiQid ~= "" then
if kanjiQid:match("^[Qq]%d+$") then
entity=lb.addClaim(entity,lb.newClaim("P5425", lb.Snak("P5425", {value={["entity-type"]="item", id=kanjiQid}, type="wikibase-entityid"})))
else
local counter = 1
for id in kanjiQid:gmatch("([Qq]%d+)") do
entity=lb.addClaim(entity,lb.addQualifier(
lb.newClaim("P5425", lb.Snak("P5425", {value={["entity-type"]="item", id=id}, type="wikibase-entityid"})),
lb.Snak("P1545", {value=counter.."", type="string"})
));
counter = counter + 1
end
end
end
return lb.Export(entity)
end
function p.verbForms(word, wordInHira, conjugation)
-- example: {{#invoke:Lexeme-ja|verbForms|着ける|つける|ka-shimo}}
-- example: {{#invoke:Lexeme-ja|verbForms|勝つ|かつ|ta-go}}
-- example: {{#invoke:Lexeme-ja|verbForms|足りる|たりる|ra-kami}}
if type(word) == 'table' then
if word.parent and word.parent.args and word.parent.args[1] then
word = word.parent
end
word, wordInHira, conjugation = word.args[1], word.args[2], word.args[3]
end
conline, contype = string.match(conjugation, "(%w+)-(%w+)")
kana_a = {a="あ",ka="か",ga="が",sa="さ",za="ざ",ta="た",da="だ",na="な",ha="は",ba="ば",ma="ま",ya="や",ra="ら",wa="わ"}
kana_i = {a="い",ka="き",ga="ぎ",sa="し",za="じ",ta="ち",da="ぢ",na="に",ha="ひ",ba="び",ma="み",ya="",ra="り",wa="い"}
kana_u = {a="う",ka="く",ga="ぐ",sa="す",za="ず",ta="つ",da="づ",na="ぬ",ha="ふ",ba="ぶ",ma="む",ya="ゆ",ra="る",wa="う"}
kana_e = {a="え",ka="け",ga="げ",sa="せ",za="ぜ",ta="て",da="で",na="ね",ha="へ",ba="べ",ma="め",ya="",ra="れ",wa="え"}
kana_o = {a="お",ka="こ",ga="ご",sa="そ",za="ぞ",ta="と",da="ど",na="の",ha="ほ",ba="ぼ",ma="も",ya="よ",ra="ろ",wa="お"}
local entity = lb.newLexeme("Q5287", "Q24905", text({["ja"]=word, ["ja-hira"]=wordInHira}))
if contype == "kami" or contype == "shimo" then
common_kana = ""
if contype == "kami" then
common_kana = kana_i[conline]
elseif contype == "shimo" then
common_kana = kana_e[conline]
end
function mizen(word)
return string.gsub(word, common_kana.."る$", common_kana)
end
function renyo(word)
return string.gsub(word, common_kana.."る$", common_kana)
end
function shushi(word)
return string.gsub(word, common_kana.."る$", common_kana.."る")
end
function rentai(word)
return string.gsub(word, common_kana.."る$", common_kana.."る")
end
function katei(word)
return string.gsub(word, common_kana.."る$", common_kana.."れ")
end
function meirei(word)
return string.gsub(word, common_kana.."る$", common_kana.."ろ")
end
function meirei2(word)
return string.gsub(word, common_kana.."る$", common_kana.."よ")
end
function gokan(word)
return string.gsub(word, common_kana.."る$", "")
end
entity=lb.addForm(entity,lb.newForm(text({["ja"]=mizen(word), ["ja-hira"]=mizen(wordInHira)}), "Q15737187"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=renyo(word), ["ja-hira"]=renyo(wordInHira)}), "Q2888577"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=shushi(word), ["ja-hira"]=shushi(wordInHira)}), "Q2898727"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=rentai(word), ["ja-hira"]=rentai(wordInHira)}), "Q53608953"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=katei(word), ["ja-hira"]=katei(wordInHira)}), "Q53609593"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=meirei(word), ["ja-hira"]=meirei(wordInHira)}), "Q4348304"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=meirei2(word), ["ja-hira"]=meirei2(wordInHira)}), "Q4348304"))
elseif contype == "go" then
function mizen(word)
return string.gsub(word, kana_u[conline].."$", kana_a[conline])
end
function mizen2(word)
return string.gsub(word, kana_u[conline].."$", kana_o[conline])
end
function renyo(word)
return string.gsub(word, kana_u[conline].."$", kana_i[conline])
end
function shushi(word)
return string.gsub(word, kana_u[conline].."$", kana_u[conline])
end
function rentai(word)
return string.gsub(word, kana_u[conline].."$", kana_u[conline])
end
function katei(word)
return string.gsub(word, kana_u[conline].."$", kana_e[conline])
end
function meirei(word)
return string.gsub(word, kana_u[conline].."$", kana_e[conline])
end
function gokan(word)
return string.gsub(word, kana_u[conline].."$", "")
end
entity=lb.addForm(entity,lb.newForm(text({["ja"]=mizen(word), ["ja-hira"]=mizen(wordInHira)}), "Q15737187"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=mizen2(word), ["ja-hira"]=mizen2(wordInHira)}), "Q15737187"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=renyo(word), ["ja-hira"]=renyo(wordInHira)}), "Q2888577"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=shushi(word), ["ja-hira"]=shushi(wordInHira)}), "Q2898727"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=rentai(word), ["ja-hira"]=rentai(wordInHira)}), "Q53608953"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=katei(word), ["ja-hira"]=katei(wordInHira)}), "Q53609593"))
entity=lb.addForm(entity,lb.newForm(text({["ja"]=meirei(word), ["ja-hira"]=meirei(wordInHira)}), "Q4348304"))
end
return lb.Export(entity)
end
return p