Module:head/templates: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 47: | Line 47: | ||
local term = p["head"] or mw.title.getCurrentTitle().text | local term = p["head"] or mw.title.getCurrentTitle().text | ||
if language.proto then | if language.proto then | ||
local appendix = "Appendix:" .. string. | local appendix = "Appendix:" .. string.gsub(language.name, " ", "_") .. "/" | ||
term = string. | term = string.gsub(term, appendix, "") | ||
end | end | ||
return { | return { |
Revision as of 10:17, 8 August 2023
Documentation for this module may be created at Module:head/templates/documentation
local export = {}
local m_head = require("Module:head")
local m_languages = require("Module:languages")
local m_parameters = require("Module:parameters")
local params = {
[1] = {required = true},
[2] = {required = true},
[3] = {list = true},
["g"] = {list = true},
["head"] = {},
["nocat"] = {type = "boolean"},
}
local function get_inflections(list)
local inflections = {}
local i = 1
while list[i] do
local inflection = {["label"] = list[i]}
if not list[i+1] then
error("unexpected end of inflection forms")
elseif list[i+1] == "or" then
error("unexpected 'or' keyword in label slot of inflection forms")
end
i = i + 1
while list[i] do
table.insert(inflection, list[i])
if list[i+1] and list[i+1] == "or" then
if not list[i+2] then
error("unexpected end of inflection forms")
end
i = i + 2
else
i = i + 1
break
end
end
table.insert(inflections, inflection)
end
return inflections
end
local function get_data(args)
local p = m_parameters.process(args, params)
local language = m_languages.get_by_code(p[1])
local term = p["head"] or mw.title.getCurrentTitle().text
if language.proto then
local appendix = "Appendix:" .. string.gsub(language.name, " ", "_") .. "/"
term = string.gsub(term, appendix, "")
end
return {
term = term,
language = language,
pos = p[2],
genders = p["g"],
nocat = p["nocat"],
inflections = get_inflections(p[3]),
}
end
function export.show(frame)
return m_head.full_head(get_data(frame:getParent().args))
end
return export