มอดูล:ug-headword
หน้าตา
- This มอดูล lacks a documentation subpage. Please create it.
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
local m_com = require("Module:ug-common")
local pos_functions = {}
local lang = require("Module:languages").getByCode("ug")
local PAGENAME = mw.title.getCurrentTitle().text
local suffix_categories = {
["คำคุณศัพท์"] = true,
["คำกริยาวิเศษณ์"] = true,
["คำนาม"] = true,
["คำกริยา"] = true,
}
local function track(page)
require("Module:debug").track("ug-headword/" .. page)
return true
end
function export.make_plural_noun(singular, vv, change)
local base, v, c = m_com.getLast(singular)
if not v then return nil end
if change == "yes" then
if vv ~= nil and vv ~= "" then
v = vv
else
if c == "" and (v == "ا" or v == "ە") then
v = "ى"
end
end
end
local term = base .. v .. c
local tongue = m_com.checkTongue(singular)
if tongue == "front" then
return term .. "لەر"
elseif tongue == "back" then
return term .. "لار"
else
-- [[Special:WhatLinksHere/Template:tracking/ug-headword/central vowels]]
track("central vowels")
end
return nil
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
-- หมวดหมู่เป็นภาษาไทย
local poscat_th = require("Module:utilities").translate_term(poscat)
local params = {
["head"] = {list = true},
["suff"] = {type = "boolean"},
}
if mw.ustring.find(PAGENAME, " ") then
-- [[Special:WhatLinksHere/Template:tracking/ug-headword/space]]
track("space")
end
if pos_functions[poscat_th] then
for key, val in pairs(pos_functions[poscat_th].params) do
params[key] = val
end
end
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {lang = lang, pos_category = poscat_th, categories = {}, heads = args["head"], genders = {}, inflections = {enable_auto_translit = true}, categories = {}}
if args["suff"] then
data.pos_category = "ปัจจัย"
if suffix_categories[poscat_th] then
--local singular_poscat = poscat:gsub("s$", "")
--table.insert(data.categories, lang:getCanonicalName() .. " " .. singular_poscat .. "-forming suffixes")
table.insert(data.categories, "ปัจจัยผันรูป" .. poscat_th .. "ภาษาอุยกูร์")
else
error("No category exists for suffixes forming " .. poscat_th .. ".")
end
end
if pos_functions[poscat_th] then
pos_functions[poscat_th].func(args, data)
end
return require("Module:headword").full_headword(data)
end
-- Display additional inflection information for a noun
pos_functions["คำนาม"] = {
params = {
[1] = {}, -- Vowel, if there is a change
["pl"] = {}, --plural override
["change"] = {}, -- yes or (else:no)
},
func = function(args, data)
local pl = args["pl"] or nil
local change = args["change"] or "yes"
if pl == "-" then
table.insert(data.inflections, {label = "นับไม่ได้"})
table.insert(data.categories, "คำนามนับไม่ได้ภาษาอุยกูร์")
else
table.insert(data.categories, "คำนามนับได้ภาษาอุยกูร์")
if not pl then
local plural = export.make_plural_noun(PAGENAME, args[1], change)
if plural then
pl = plural
else
table.insert(data.categories, "Uyghur nouns with unpredictable plurals")
end
end
if pl then
local infl = {label = 'พหูพจน์', {term=pl}}
table.insert(data.inflections, infl)
-- else
-- table.insert(data.categories, "Uyghur nouns needing plural inflection")
end
end
if pl and not mw.title.new(pl).exists then
table.insert(data.categories, "Uyghur nouns with red links in their headword lines")
end
end
}
pos_functions["คำวิสามานยนาม"] = {
params = {
[1] = {}, -- Vowel, if there is a change
["pl"] = {}, --plural override
["change"] = {}, -- yes or (else:no)
},
func = function(args, data)
local pl = args["pl"] or nil
local change = args["change"] or "yes"
if pl == "-" then
table.insert(data.inflections, {label = "นับไม่ได้"})
table.insert(data.categories, "คำวิสามานยนามนับไม่ได้ภาษาอุยกูร์")
else
table.insert(data.categories, "คำวิสามานยนามนับได้ภาษาอุยกูร์")
if not pl then
local plural = export.make_plural_noun(PAGENAME, args[1], change)
if plural then
pl = plural
else
table.insert(data.categories, "Uyghur proper nouns with unpredictable plurals")
end
end
if pl then
local infl = {label = 'พหูพจน์', {term=pl}}
table.insert(data.inflections, infl)
-- else
-- table.insert(data.categories, "Uyghur nouns needing plural inflection")
end
end
if pl and not mw.title.new(pl).exists then
table.insert(data.categories, "Uyghur proper nouns with red links in their headword lines")
end
end
}
function export.noun(frame)
local params = {
[1] = {}, -- Vowel, if there is a change
["pl"] = {}, --plural override
["head"] = {},
["change"] = {}, -- yes or (else:no)
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {
lang = lang,
pos_category = "คำนาม",
categories = {},
heads = {args["head"]},
inflections = {enable_auto_translit = true}
}
local pl = args["pl"] or nil
local change = args["change"] or "yes"
if pl == "-" then
table.insert(data.inflections, {label = "นับไม่ได้"})
table.insert(data.categories, "คำนามนับไม่ได้ภาษาอุยกูร์")
else
if not pl then
local plural = export.make_plural_noun(PAGENAME, args[1], change)
if plural then
pl = plural
else
table.insert(data.categories, "Uyghur nouns with unpredictable plurals")
end
end
if pl then
local infl = {label = 'impersonal nominative plural', {term=pl}}
table.insert(data.inflections, infl)
-- else
-- table.insert(data.categories, "Uyghur nouns needing plural inflection")
end
end
if pl and not mw.title.new(pl).exists then
table.insert(data.categories, "Uyghur nouns with red links in their headword lines")
end
return require("Module:headword").full_headword(data)
end
return export