Module:headword/templates
Documentation for this module may be created at Module:headword/templates/doc
local export = {}
--[[ used in Tamil language
-- Part of speech types that should not be pluralized.
local invariable = {
["cmavo"] = true,
["cmene"] = true,
["fu'ivla"] = true,
["gismu"] = true,
["holdon"] = true, --Han tu
["hanzi"] = true, --hanzi
["hanja"] = true, --hanja
["jyutping"] = true, --jyutping
["kanji"] = true, --kanji
["lujvo"] = true,
["phrasebook"] = true,
["pinyin"] = true, --pinyin
["rafsi"] = true,
["romaji"] = true, --romaji
}
--]]
function export.head_t(frame)
local params = {
[1] = {required = true, default = "und"},
["sc"] = {},
["cat sc"] = {},
["sort"] = {},
[2] = {required = true, default = "பெயர்ச்சொல்"},
["cat2"] = {},
["cat3"] = {},
["cat4"] = {},
["head"] = {list = true, allow_holes = true, default = ""},
["tr"] = {list = true, allow_holes = true},
["g"] = {list = true},
[3] = {list = true, allow_holes = true},
["f=accel"] = {list = true, allow_holes = true},
["f=request"] = {list = true, allow_holes = true},
["f=alt"] = {list = true, allow_holes = true},
["f=sc"] = {list = true, allow_holes = true},
["f=id"] = {list = true, allow_holes = true},
["f=tr"] = {list = true, allow_holes = true},
["f=g"] = {list = true, allow_holes = true},
["f=qual"] = {list = true, allow_holes = true},
["f=nolink"] = {list = true, allow_holes = true, type = "boolean"},
["f=lang"] = {list = true, allow_holes = true},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
-- Get language and script information
local data = {}
data.lang = require("Module:languages").getByCode(args[1]) or require("Module:languages").err(args[1], 1)
data.sort_key = args["sort"]
data.heads = args["head"]
data.translits = args["tr"]
data.genders = args["g"]
-- Script
local cat_sc
if args["cat sc"] then
data.sc = (args["cat sc"] and (require("Module:scripts").getByCode(args["cat sc"]) or error("The script code \"" .. args["cat sc"] .. "\" is not valid.")) or nil)
cat_sc = cat_sc
else
data.sc = (args["sc"] and (require("Module:scripts").getByCode(args["sc"]) or error("The script code \"" .. args["sc"] .. "\" is not valid.")) or nil)
end
-- Part-of-speech category
data.pos_category = args[2]
--[[used in Mon language
if not data.pos_category:find("s$") and not invariable[data.pos_category] then
-- Make the plural form of the part of speech
if data.pos_category:find("x$") then
data.pos_category = data.pos_category .. "es"
else
data.pos_category = data.pos_category .. "s"
end
end
--]]
if cat_sc then
data.pos_category = data.pos_category .. "இல்" .. cat_sc:getCategoryName()
end
-- Additional categories
data.categories = {}
if args["cat2"] then
--table.insert(data.categories, args["cat2"] .. data.lang:getCategoryName())
if args["cat2"]:match("^சொல்லகராதி") then
table.insert(data.categories, "உள்ளது" .. data.lang:getCategoryName() .. mw.ustring.sub(args["cat2"], 6))
else
table.insert(data.categories, args["cat2"] .. data.lang:getCategoryName())
end
end
if args["cat3"] then
--table.insert(data.categories, args["cat3"] .. data.lang:getCategoryName())
if args["cat3"]:match("^சொல்லகராதி") then
table.insert(data.categories, "உள்ளது" .. data.lang:getCategoryName() .. mw.ustring.sub(args["cat3"], 6))
else
table.insert(data.categories, args["cat3"] .. data.lang:getCategoryName())
end
end
if args["cat4"] then
--table.insert(data.categories, args["cat4"] .. data.lang:getCategoryName())
if args["cat4"]:match("^சொல்லகராதி") then
table.insert(data.categories, "உள்ளது" .. data.lang:getCategoryName() .. mw.ustring.sub(args["cat4"], 6))
else
table.insert(data.categories, args["cat4"] .. data.lang:getCategoryName())
end
end
-- Inflected forms
data.inflections = {}
for i = 1, math.ceil(args[3].maxindex / 2) do
local infl_part = {
label = args[3][i * 2 - 1],
accel = args["faccel"][i],
request = args["frequest"][i],
}
local form = {
term = args[3][i * 2],
alt = args["falt"][i],
genders = {args["fg"][i]},
id = args["fid"][i],
lang = args["flang"][i],
nolink = args["fnolink"][i],
qualifiers = {args["fqual"][i]},
sc = args["fsc"][i],
translit = args["ftr"][i],
}
if form.lang then
form.lang = require("Module:languages").getByCode(form.lang) or require("Module:languages").err(form.lang, "f" .. i .. "lang")
end
if form.sc then
form.sc = require("Module:scripts").getByCode(form.sc) or error("The script code \"" .. form.sc .. "\" is not valid.")
end
-- If no term or alt is given, then the label is shown alone.
if form.term or form.alt then
table.insert(infl_part, form)
end
if infl_part.label == "அல்லது" then
-- Append to the previous inflection part, if one exists
if #infl_part > 0 and data.inflections[1] then
table.insert(data.inflections[#data.inflections], form)
end
elseif infl_part.label then
-- Add a new inflection part
table.insert(data.inflections, infl_part)
end
end
return require("Module:headword").full_headword(data)
end
return export