Differenze tra le versioni di "Modulo:Headword/templates"
m (174 versioni importate) |
|||
| (48 versioni intermedie di 7 utenti non mostrate) | |||
| Riga 2: | Riga 2: | ||
-- Part of speech types that should not be pluralized. | -- Part of speech types that should not be pluralized. | ||
| − | local invariable = | + | local invariable = mw.loadData("Module:headword/data").invariable |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | local params = { | + | function export.head_t(frame) |
| − | + | local plain_param = {} | |
| − | + | local list_with_holes = {list = true, allow_holes = true} | |
| − | + | local params = { | |
| − | + | [1] = {required = true, default = "und"}, | |
| + | ["sc"] = plain_param, | ||
| + | ["cat sc"] = plain_param, | ||
| + | ["sort"] = plain_param, | ||
| + | |||
| + | [2] = {required = true, default = "nouns"}, | ||
| + | ["cat2"] = plain_param, | ||
| + | ["cat3"] = plain_param, | ||
| + | ["cat4"] = plain_param, | ||
| + | |||
| + | ["head"] = {list = true, allow_holes = true, default = ""}, | ||
| + | ["id"] = plain_param, | ||
| + | ["tr"] = list_with_holes, | ||
| + | -- See also "ts" at bottom. | ||
| + | ["g"] = {list = true}, | ||
| + | |||
| + | [3] = list_with_holes, | ||
| + | |||
| + | ["f=accel"] = list_with_holes, | ||
| + | ["f=request"] = list_with_holes, | ||
| + | ["f=alt"] = list_with_holes, | ||
| + | ["f=sc"] = list_with_holes, | ||
| + | ["f=id"] = list_with_holes, | ||
| + | ["f=tr"] = list_with_holes, | ||
| + | ["f=g"] = list_with_holes, | ||
| + | ["f=qual"] = list_with_holes, | ||
| + | ["f=nolink"] = {list = true, allow_holes = true, type = "boolean"}, | ||
| + | ["f=lang"] = list_with_holes, | ||
| + | |||
| + | -- Belongs after "tr", but has to be placed here, or args["falt"] will vanish. | ||
| + | ["ts"] = list_with_holes, | ||
| + | } | ||
| + | |||
| + | 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.id = args["id"] | ||
| + | data.translits = args["tr"] | ||
| + | data.transcriptions = args["ts"] | ||
| + | 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] | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | 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 -- prefix, suffix, confix, infix, circumfix, affix, interfix, transfix | |
| − | + | data.pos_category = data.pos_category .. "es" | |
| − | + | else | |
| + | data.pos_category = data.pos_category .. "s" | ||
| + | end | ||
| + | end | ||
if cat_sc then | if cat_sc then | ||
| − | + | data.pos_category = data.pos_category .. " in " .. cat_sc:getCategoryName() | |
| − | + | end | |
| − | + | ||
| − | + | -- Additional categories | |
| + | data.categories = {} | ||
| + | |||
| + | if args["cat2"] then | ||
| + | table.insert(data.categories, data.lang:getCanonicalName() .. " " .. args["cat2"]) | ||
end | end | ||
| − | + | if args["cat3"] then | |
| − | + | table.insert(data.categories, data.lang:getCanonicalName() .. " " .. args["cat3"]) | |
| − | + | end | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | -- | + | if args["cat4"] then |
| − | + | table.insert(data.categories, data.lang:getCanonicalName() .. " " .. args["cat4"]) | |
| + | end | ||
| + | |||
| + | -- Inflected forms | ||
| + | data.inflections = {} | ||
| − | |||
for i = 1, math.ceil(args[3].maxindex / 2) do | for i = 1, math.ceil(args[3].maxindex / 2) do | ||
local infl_part = { | local infl_part = { | ||
label = args[3][i * 2 - 1], | label = args[3][i * 2 - 1], | ||
| − | accel = | + | accel = args["faccel"][i], |
| − | request = | + | request = args["frequest"][i], |
} | } | ||
local form = { | local form = { | ||
term = args[3][i * 2], | term = args[3][i * 2], | ||
| − | alt = | + | alt = args["falt"][i], |
| − | genders = { | + | genders = {args["fg"][i]}, |
| − | id = | + | id = args["fid"][i], |
| − | lang = | + | lang = args["flang"][i], |
| − | nolink = | + | nolink = args["fnolink"][i], |
| − | qualifiers = { | + | qualifiers = {args["fqual"][i]}, |
| − | sc = | + | sc = args["fsc"][i], |
| − | translit = | + | translit = args["ftr"][i], |
} | } | ||
| − | if form.lang | + | if form.lang then |
| − | form.lang = require("Module:languages").getByCode(form.lang) or | + | form.lang = require("Module:languages").getByCode(form.lang) or require("Module:languages").err(form.lang, "f" .. i .. "lang") |
end | end | ||
| − | if form.sc | + | if form.sc then |
form.sc = require("Module:scripts").getByCode(form.sc) or error("The script code \"" .. form.sc .. "\" is not valid.") | form.sc = require("Module:scripts").getByCode(form.sc) or error("The script code \"" .. form.sc .. "\" is not valid.") | ||
end | end | ||
| Riga 118: | Riga 131: | ||
if infl_part.label == "or" then | if infl_part.label == "or" then | ||
-- Append to the previous inflection part, if one exists | -- Append to the previous inflection part, if one exists | ||
| − | if #infl_part > 0 and inflections[1] then | + | if #infl_part > 0 and data.inflections[1] then |
| − | table.insert(inflections[#inflections], form) | + | table.insert(data.inflections[#data.inflections], form) |
end | end | ||
elseif infl_part.label then | elseif infl_part.label then | ||
-- Add a new inflection part | -- Add a new inflection part | ||
| − | table.insert(inflections, infl_part) | + | table.insert(data.inflections, infl_part) |
end | end | ||
end | end | ||
| − | + | return require("Module:headword").full_headword(data) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | return | ||
| − | |||
| − | |||
end | end | ||
return export | return export | ||
Versione attuale delle 05:12, 5 set 2018
La documentazione per questo modulo può essere creata in Modulo:Headword/templates/man
local export = {}
-- Part of speech types that should not be pluralized.
local invariable = mw.loadData("Module:headword/data").invariable
function export.head_t(frame)
local plain_param = {}
local list_with_holes = {list = true, allow_holes = true}
local params = {
[1] = {required = true, default = "und"},
["sc"] = plain_param,
["cat sc"] = plain_param,
["sort"] = plain_param,
[2] = {required = true, default = "nouns"},
["cat2"] = plain_param,
["cat3"] = plain_param,
["cat4"] = plain_param,
["head"] = {list = true, allow_holes = true, default = ""},
["id"] = plain_param,
["tr"] = list_with_holes,
-- See also "ts" at bottom.
["g"] = {list = true},
[3] = list_with_holes,
["f=accel"] = list_with_holes,
["f=request"] = list_with_holes,
["f=alt"] = list_with_holes,
["f=sc"] = list_with_holes,
["f=id"] = list_with_holes,
["f=tr"] = list_with_holes,
["f=g"] = list_with_holes,
["f=qual"] = list_with_holes,
["f=nolink"] = {list = true, allow_holes = true, type = "boolean"},
["f=lang"] = list_with_holes,
-- Belongs after "tr", but has to be placed here, or args["falt"] will vanish.
["ts"] = list_with_holes,
}
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.id = args["id"]
data.translits = args["tr"]
data.transcriptions = args["ts"]
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]
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 -- prefix, suffix, confix, infix, circumfix, affix, interfix, transfix
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 .. " in " .. cat_sc:getCategoryName()
end
-- Additional categories
data.categories = {}
if args["cat2"] then
table.insert(data.categories, data.lang:getCanonicalName() .. " " .. args["cat2"])
end
if args["cat3"] then
table.insert(data.categories, data.lang:getCanonicalName() .. " " .. args["cat3"])
end
if args["cat4"] then
table.insert(data.categories, data.lang:getCanonicalName() .. " " .. args["cat4"])
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 == "or" 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