모듈:uk-headword
보이기
함수
[편집]export.show
[편집]function export.show(frame)
이 함수에는 설명문서가 존재하지 않습니다. 함수에 대한 사용법과 입출력, 유사한 함수와의 차이점을 다른 사용자들이 참고할 수 있도록 추가하거나, 함수 목록에서 제거하기 위해 지역 함수로 변경하세요.
관련 모듈
[편집]local PAGENAME = mw.title.getCurrentTitle().text
local export = {}
local pos_functions = {}
local m_links = require("Module:also/link")
local m_params = require("Module:parameters")
local m_uk = require("Module:uk-noun")
local m_headword = require("Module:headword")
local lang = require("모듈:languages").getByCode("uk")
local langname = lang:getCanonicalName()
local function glossary_link(entry, text)
text = text or entry
return "[[부록:용어사전#" .. entry .. "|" .. text .. "]]"
end
local function check_exists(forms, cats, pos)
for _, form in ipairs(forms) do
if type(form) == "table" then
form = form.term
end
if not mw.title.new(form).exists then
table.insert(cats, langname .. " " .. pos .. " 표제어에 표시된 링크가 빨간 링크인 문서")
return false
end
end
return true
end
pos_functions["명사"] = {
params = {
["g"] = {list = true}, -- 성
["anim"] = {}, -- 활성
},
func = function(args, data)
local m_uk = require("Module:uk-noun")
-- args가 문자열인 경우 처리
if type(args) == "string" then
args = {[1] = args}
end
local parent_args = mw.getCurrentFrame():getParent().args
local alternant_multiword_spec = m_uk.do_generate_forms(parent_args)
-- 성 처리
if alternant_multiword_spec.genders then
data.genders = alternant_multiword_spec.genders
end
-- 활성 처리
if alternant_multiword_spec.animacy then
table.insert(data.categories, alternant_multiword_spec.animacy == "an" and "우크라이나어 유정 명사" or "우크라이나어 무정 명사")
end
-- 변화형 추가
for slot, forms in pairs(alternant_multiword_spec.forms) do
if slot ~= "nom_s" then -- 주격 단수는 이미 표제어로 사용됨
table.insert(data.inflections, {label = output_noun_slots[slot], forms})
end
end
-- 카테고리 추가
for _, category in ipairs(alternant_multiword_spec.categories) do
table.insert(data.categories, category)
end
-- 주석 추가
if alternant_multiword_spec.annotation then
data.annotation = alternant_multiword_spec.annotation
end
return data
end
}
pos_functions["형용사"] = function(args, data)
-- 형용사 처리 로직 추가
end
pos_functions["대명사"] = function(args, data)
-- 대명사 처리 로직 추가
end
pos_functions["동사"] = function(args, data)
-- 동사 처리 로직 추가
end
function export.show(frame)
local iparams = {
[1] = {required = true, desc = "part of speech"},
}
local iargs = m_params.process(frame.args, iparams)
local poscat = iargs[1]
local params = {
[1] = {list = "head"}, -- heads
["tr"] = {list = true}, -- translits
["noposcat"] = {type = "boolean"}, -- don't add part of speech category
["noacccat"] = {type = "boolean"}, -- don't add missing-accent tracking category
["notrcat"] = {type = "boolean"}, -- don't add 'irregular pronunciations' tracking category
}
if pos_functions[poscat] then
for key, val in pairs(pos_functions[poscat].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = m_params.process(parargs, params)
local data = {
lang = lang,
pos_category = poscat,
categories = {},
heads = {},
translits = {},
redundant_translits = {},
genders = {},
inflections = {},
noposcat = args.noposcat
}
local PAGENAME = mw.title.getCurrentTitle().text
local NAMESPACE = mw.title.getCurrentTitle().nsText
-- Get the head parameters
local heads = args[1]
if #heads == 0 then
heads = {PAGENAME}
end
data.heads = heads
for i, head in ipairs(heads) do
local head_no_links = m_links.remove_links(head)
local head_noaccent = mw.ustring.gsub(head_no_links, "́", "")
if NAMESPACE == "" and head_noaccent ~= PAGENAME then
mw.log("bad-headword")
end
if not mw.ustring.find(head_no_links, "́") then
if not args.noacccat then
table.insert(data.categories, "우크라이나어 표제어에 강세 표시 필요")
end
end
local tr = args.tr and args.tr[i]
if tr then
local tr_gen = mw.ustring.gsub(head, "́", "")
if tr == tr_gen then
data.redundant_translits[i] = true
elseif not args.notrcat then
table.insert(data.categories, "우크라이나어 불규칙 발음 용어")
end
data.translits[i] = tr
end
end
if pos_functions[poscat] then
pos_functions[poscat].func(args, data)
end
return m_headword.full_headword(data) .. (data.extra_text or "")
end
return export