Module:links/templates
Documentation for this module may be created at Module:links/templates/doc
local export = {}
local m_debug = require("Module:debug")
local m_languages = require("Module:languages")
local m_links = require("Module:links")
local m_parameters = require("Module:parameters")
local m_scripts = require("Module:scripts")
--[=[
Modules used:
[[Module:links]]
[[Module:languages]]
[[Module:scripts]]
[[Module:parameters]]
[[Module:debug]]
]=]
-- Used in [[Template:l]] and [[Template:m]].
function export.l_term_t(frame)
local plain_param = {}
local param_4 = {alias_of = 4}
local face = frame.args["face"]
local allowSelfLink = frame.args["notself"]; allowSelfLink = not allowSelfLink or allowSelfLink == ""
local params = {
[1] = {required = true},
[2] = plain_param,
[3] = plain_param,
[4] = plain_param,
["g"] = {list = true},
["gloss"] = param_4,
["id"] = plain_param,
["lit"] = plain_param,
["pos"] = plain_param,
["sc"] = plain_param,
["t"] = param_4,
["tr"] = plain_param,
["ts"] = plain_param,
["accel-form"] = plain_param,
["accel-translit"] = plain_param,
["accel-lemma"] = plain_param,
["accel-lemma-translit"] = plain_param,
["accel-gender"] = plain_param,
["accel-nostore"] = {type = "boolean"},
}
-- Compatibility mode for {{term}}.
-- If given a nonempty value, the function uses lang= to specify the
-- language, and all the positional parameters shift one number lower.
local compat = (frame.args["compat"] or "") ~= ""
if compat then
params["lang"] = plain_param,
table.remove(params, 1)
end
local args = m_parameters.process(frame:getParent().args, params)
local lang = args[compat and "lang" or 1]
-- Tracking for missing language or und
if not lang then
m_debug.track("link/no lang")
elseif lang == "und" then
m_debug.track("link/und")
end
lang = lang or "und"
local sc = args["sc"]
local term = args[(compat and 1 or 2)]
local alt = args[(compat and 2 or 3)]
-- Check parameters
lang = m_languages.getByCode(lang, 1, "allow etym")
lang = m_languages.getNonEtymological(lang)
if sc then
sc = m_scripts.getByCode(sc, "sc")
end
-- Forward the information to full_link
return m_links.full_link(
{
lang = lang,
sc = sc,
term = term,
alt = alt,
gloss = args[4],
id = args["id"],
tr = args["tr"],
ts = args["ts"],
genders = args["g"],
pos = args["pos"],
lit = args["lit"],
accel = args["accel-form"] and {
form = args["accel-form"],
translit = args["accel-translit"],
lemma = args["accel-lemma"],
lemma_translit = args["accel-lemma-translit"],
gender = args["accel-gender"],
nostore = args["accel-nostore"],
} or nil,
},
face,
allowSelfLink
)
end
-- Used in [[Template:ll]].
function export.ll(frame)
local plain_param = {}
local params = {
[1] = { required = true },
[2] = { allow_empty = true },
[3] = plain_param,
["notself"] = {type = "boolean", default = false},
["id"] = plain_param,
}
local args = m_parameters.process(frame:getParent().args, params)
local allowSelfLink = not args["notself"]
local lang = args[1]
lang = m_languages.getByCode(lang, 1, "allow etym")
lang = m_languages.getNonEtymological(lang)
local text = args[2]
local alt = args[3]
if text == "" then
return alt or ""
end
local id = args["id"]
return m_links.language_link(
{
term = text,
alt = alt,
lang = lang,
id = id
},
allowSelfLink
)
end
function export.def_t(frame)
local params = {
[1] = {required = true, default = ""},
}
local args = m_parameters.process(frame:getParent().args, params)
return m_links.english_links(args[1])
end
function export.linkify_t(frame)
local params = {
[1] = {required = true, default = ""},
}
local args = m_parameters.process(frame:getParent().args, params)
args[1] = mw.text.trim(args[1])
if args[1] == "" or args[1]:find("[[", nil, true) then
return args[1]
else
return "[[" .. args[1] .. "]]"
end
end
function export.section_link_t(frame)
local params = {
[1] = {},
}
local args = m_parameters.process(frame:getParent().args, params)
return m_links.section_link(args[1])
end
function export.language_name_link_t(frame)
local plain_param = {}
local param_4 = {alias_of = 4}
local face = frame.args["face"]
local allowSelfLink = frame.args["notself"]; allowSelfLink = not allowSelfLink or allowSelfLink == ""
local params = {
[1] = {required = true},
[2] = plain_param,
[3] = plain_param,
[4] = plain_param,
["g"] = {list = true},
["gloss"] = param_4,
["id"] = plain_param,
["lit"] = plain_param,
["pos"] = plain_param,
["sc"] = plain_param,
["t"] = param_4,
["tr"] = plain_param,
["ts"] = plain_param,
["w"] = {type = "boolean", default = false},
}
-- Compatibility mode for {{term}}.
-- If given a nonempty value, the function uses lang= to specify the
-- language, and all the positional parameters shift one number lower.
local compat = (frame.args["compat"] or "") ~= ""
if compat then
params["lang"] = plain_param,
table.remove(params, 1)
end
local args = m_parameters.process(frame:getParent().args, params)
local lang = args[compat and "lang" or 1]
-- Tracking for missing language or und
if not lang then
m_debug.track("link/no lang")
elseif lang == "und" then
m_debug.track("link/und")
end
lang = lang or "und"
local sc = args["sc"]
local term = args[(compat and 1 or 2)]
local alt = args[(compat and 2 or 3)]
-- Check parameters
lang = m_languages.getByCode(lang, 1, "allow etym")
local non_etym_lang = m_languages.getNonEtymological(lang)
if sc then
sc = m_scripts.getByCode(sc, "sc")
end
if not term and not alt and frame.args["demo"] then
term = frame.args["demo"]
end
--[[
Add a language name, linked to Wikipedia if the Wikipedia parameter is set to true.
Forward the information to full_link.
]]
local language_name = args.w and lang:makeWikipediaLink() or lang:getCanonicalName()
if term == "-" then
return language_name
else
return language_name .. " " ..
m_links.full_link(
{
lang = non_etym_lang,
sc = sc,
term = term,
alt = alt,
gloss = args[4],
id = args["id"],
tr = args["tr"],
ts = args["ts"],
genders = args["g"],
pos = args["pos"],
lit = args["lit"]
},
face,
allowSelfLink
)
end
end
return export