Module:Homophones
Appearance
local export = {}
local m_links = require("Module:links")
function export.show(frame)
local args = frame:getParent().args
local lang = args["lang"]; if lang == "" then lang = nil end
if not lang then
lang = "en"
end
lang = require("Module:languages").getByCode(lang) or error("The language code \"" .. lang .. "\" is not valid.")
local text = ""
local terms = {} -- because args is unmodifiable
--make the term empty string if only the alternate text exists
for name, parameter in pairs(args) do
local regex = mw.ustring.match(tostring(name),"^alt%d+$")
if regex then
local index = tonumber((name:gsub("alt", "")))
if not args[index] then
terms[index] = ""
end
end
end
--copy all unnamed parameters to terms
for i, param in ipairs(args) do
terms[i] = param
end
--main process
local comma = false
local count = 0
for i, parameter in ipairs(terms) do
count = count + 1
if comma then
text = text .. ", "
else
comma = true
end
local alt = args["alt" .. tostring(i)]
local tr = args["tr" .. tostring(i)]
if parameter == "" then
text = text .. alt
else
text = text .. m_links.full_link({lang = lang, term = parameter, alt = alt, tr = tr})
end
end
--return process
if count > 1 then --add an "s" to "Homophone" if there is more than one term
return "Homophones: " .. text
elseif count == 1 then --no "s" if there is only one term
return "Homophone: " .. text
end
--if there is no term at all, return default text if namespace is Template
if mw.title.getCurrentTitle().nsText == "Template" then
return "Homophone: [[term#Scots|term]]"
end
--if this line is parsed, there are no terms at all and the namespace is not Template
error("Please provide at least one homophone.")
end
return export