Module:links/templates: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
local process_params = require("Module:parameters").process | |||
local remove = table.remove | |||
local upper = require("Module:string utilities").upper | |||
local export = {} | local export = {} | ||
Line 9: | Line 13: | ||
]=] | ]=] | ||
-- | do | ||
function | local function get_args(frame) | ||
-- `compat` is a 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 iargs = frame.args | |||
iargs.compat = iargs.compat and iargs.compat ~= "" | |||
iargs.langname = iargs.langname and iargs.langname ~= "" | |||
iargs.notself = iargs.notself and iargs.notself ~= "" | |||
local alias_of_4 = {alias_of = 4} | |||
local boolean = {type = "boolean"} | |||
local plain = {} | |||
local params = { | |||
[1] = {required = true, type = "language", default = "und"}, | |||
[2] = plain, | |||
[3] = plain, | |||
[4] = plain, | |||
["g"] = {list = true}, | |||
["gloss"] = alias_of_4, | |||
["id"] = plain, | |||
["lit"] = plain, | |||
["pos"] = plain, | |||
["sc"] = {type = "script"}, | |||
["t"] = alias_of_4, | |||
["tr"] = plain, | |||
["ts"] = plain, | |||
["accel-form"] = plain, | |||
["accel-translit"] = plain, | |||
["accel-lemma"] = plain, | |||
["accel-lemma-translit"] = plain, | |||
["accel-gender"] = plain, | |||
["accel-nostore"] = boolean, | |||
["name"] = boolean, | |||
["to_wikt"] = boolean, | |||
} | |||
if iargs.compat then | |||
params["lang"] = {type = "language", default = "und"} | |||
remove(params, 1) | |||
alias_of_4.alias_of = 3 | |||
end | |||
if iargs.langname then | |||
params["w"] = {type = "boolean", default = true} | |||
end | |||
return process_params(frame:getParent().args, params), iargs | |||
end | end | ||
local | -- Used in [[Template:l]] and [[Template:mn]]. | ||
function export.l_term_t(frame) | |||
local args, iargs = get_args(frame) | |||
local compat = iargs.compat | |||
local lang = args[compat and "lang" or 1] | |||
return | |||
local term = args[(compat and 1 or 2)] | |||
local alt = args[(compat and 2 or 3)] | |||
term = term ~= "" and term or nil | |||
if not term and not alt and iargs.demo then | |||
term = iargs.demo | |||
end | |||
local langname = (not args.name or iargs.langname) and ( | |||
args.w and lang:makeWikipediaLink() or | |||
lang:getCanonicalName() | |||
) or nil | |||
if langname and term == "-" then | |||
return langname | |||
end | |||
-- Forward the information to full_link | |||
return (langname and langname .. " " or "") .. require("Module:links").full_link( | |||
{ | |||
lang = lang, | |||
sc = args.sc, | |||
track_sc = true, | |||
term = term, | |||
face, | alt = alt, | ||
gloss = args[4], | |||
id = args["id"], | |||
tr = args["tr"], | |||
ts = args["ts"], | |||
genders = args["g"], | |||
pos = args["pos"], | |||
lit = args["lit"], | |||
to_wikt = args["to_wikt"], | |||
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 | |||
}, | |||
iargs.face, | |||
not iargs.notself | |||
) | |||
end | end | ||
end | end | ||
-- Used in [[Template:ll]]. | -- Used in [[Template:ll]]. | ||
function | do | ||
local function get_args(frame) | |||
[1] = { required = true }, | local plain = {} | ||
return process_params(frame:getParent().args, { | |||
[1] = {required = true, type = "language", default = "und"}, | |||
[2] = {allow_empty = true}, | |||
[3] = plain, | |||
["id"] = plain, | |||
["sc"] = {type = "script"}, | |||
}) | |||
end | end | ||
local | function export.ll(frame) | ||
local args = get_args(frame) | |||
local lang = args[1] | |||
local sc = args["sc"] | |||
local term = args[2] | |||
term = term ~= "" and term or nil | |||
return require("Module:links").language_link{ | |||
lang = lang, | lang = lang, | ||
id = id | sc = sc, | ||
}, | term = term, | ||
alt = args[3], | |||
id = args.id | |||
} or "<small>[Term?]</small>" .. | |||
require("Module:utilities").format_categories( | |||
{lang:getFullName() .. " term requests"}, | |||
lang, "-", nil, nil, sc | |||
) | |||
end | |||
end | end | ||
function export.def_t(frame) | function export.def_t(frame) | ||
local | local args = process_params(frame:getParent().args, { | ||
[1] = {required = true, default = ""}, | [1] = {required = true, default = ""}, | ||
} | }) | ||
local | local lang = require("Module:languages").getByCode("en") | ||
local sc = require("Module:scripts").getByCode("Latn") | |||
return require("Module:links"). | return require("Module:script utilities").tag_text(require("Module:links").embedded_language_links{ | ||
term = args[1], | |||
lang = lang, | |||
sc = sc | |||
}, lang, sc) | |||
end | end | ||
function export.linkify_t(frame) | function export.linkify_t(frame) | ||
local | local args = process_params(frame:getParent().args, { | ||
[1] = {required = true, default = ""}, | [1] = {required = true, default = ""}, | ||
} | }) | ||
args[1] = mw.text.trim(args[1]) | args[1] = mw.text.trim(args[1]) | ||
Line 166: | Line 176: | ||
end | end | ||
function export. | function export.cap_t(frame) | ||
local | local args = process_params(frame:getParent().args, { | ||
[1] = {}, | [1] = {required = true}, | ||
} | ["lang"] = {type = "language", default = "en"}, | ||
}) | |||
local | local term = args[1] | ||
return require("Module:links"). | return require("Module:links").full_link{ | ||
lang = args.lang, | |||
term = term, | |||
alt = term:gsub("^.[\128-\191]*", upper) | |||
} | |||
end | end | ||
function export. | function export.section_link_t(frame) | ||
local | local args = process_params(frame:getParent().args, { | ||
[1] = {}, | |||
}) | |||
return require("Module:links").section_link(args[1]) | |||
end | end | ||
return export | return export |
Latest revision as of 20:30, 22 November 2024
Documentation for this module may be created at Module:links/templates/doc
local process_params = require("Module:parameters").process
local remove = table.remove
local upper = require("Module:string utilities").upper
local export = {}
--[=[
Modules used:
[[Module:links]]
[[Module:languages]]
[[Module:scripts]]
[[Module:parameters]]
]=]
do
local function get_args(frame)
-- `compat` is a 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 iargs = frame.args
iargs.compat = iargs.compat and iargs.compat ~= ""
iargs.langname = iargs.langname and iargs.langname ~= ""
iargs.notself = iargs.notself and iargs.notself ~= ""
local alias_of_4 = {alias_of = 4}
local boolean = {type = "boolean"}
local plain = {}
local params = {
[1] = {required = true, type = "language", default = "und"},
[2] = plain,
[3] = plain,
[4] = plain,
["g"] = {list = true},
["gloss"] = alias_of_4,
["id"] = plain,
["lit"] = plain,
["pos"] = plain,
["sc"] = {type = "script"},
["t"] = alias_of_4,
["tr"] = plain,
["ts"] = plain,
["accel-form"] = plain,
["accel-translit"] = plain,
["accel-lemma"] = plain,
["accel-lemma-translit"] = plain,
["accel-gender"] = plain,
["accel-nostore"] = boolean,
["name"] = boolean,
["to_wikt"] = boolean,
}
if iargs.compat then
params["lang"] = {type = "language", default = "und"}
remove(params, 1)
alias_of_4.alias_of = 3
end
if iargs.langname then
params["w"] = {type = "boolean", default = true}
end
return process_params(frame:getParent().args, params), iargs
end
-- Used in [[Template:l]] and [[Template:mn]].
function export.l_term_t(frame)
local args, iargs = get_args(frame)
local compat = iargs.compat
local lang = args[compat and "lang" or 1]
local term = args[(compat and 1 or 2)]
local alt = args[(compat and 2 or 3)]
term = term ~= "" and term or nil
if not term and not alt and iargs.demo then
term = iargs.demo
end
local langname = (not args.name or iargs.langname) and (
args.w and lang:makeWikipediaLink() or
lang:getCanonicalName()
) or nil
if langname and term == "-" then
return langname
end
-- Forward the information to full_link
return (langname and langname .. " " or "") .. require("Module:links").full_link(
{
lang = lang,
sc = args.sc,
track_sc = true,
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"],
to_wikt = args["to_wikt"],
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
},
iargs.face,
not iargs.notself
)
end
end
-- Used in [[Template:ll]].
do
local function get_args(frame)
local plain = {}
return process_params(frame:getParent().args, {
[1] = {required = true, type = "language", default = "und"},
[2] = {allow_empty = true},
[3] = plain,
["id"] = plain,
["sc"] = {type = "script"},
})
end
function export.ll(frame)
local args = get_args(frame)
local lang = args[1]
local sc = args["sc"]
local term = args[2]
term = term ~= "" and term or nil
return require("Module:links").language_link{
lang = lang,
sc = sc,
term = term,
alt = args[3],
id = args.id
} or "<small>[Term?]</small>" ..
require("Module:utilities").format_categories(
{lang:getFullName() .. " term requests"},
lang, "-", nil, nil, sc
)
end
end
function export.def_t(frame)
local args = process_params(frame:getParent().args, {
[1] = {required = true, default = ""},
})
local lang = require("Module:languages").getByCode("en")
local sc = require("Module:scripts").getByCode("Latn")
return require("Module:script utilities").tag_text(require("Module:links").embedded_language_links{
term = args[1],
lang = lang,
sc = sc
}, lang, sc)
end
function export.linkify_t(frame)
local args = process_params(frame:getParent().args, {
[1] = {required = true, default = ""},
})
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.cap_t(frame)
local args = process_params(frame:getParent().args, {
[1] = {required = true},
["lang"] = {type = "language", default = "en"},
})
local term = args[1]
return require("Module:links").full_link{
lang = args.lang,
term = term,
alt = term:gsub("^.[\128-\191]*", upper)
}
end
function export.section_link_t(frame)
local args = process_params(frame:getParent().args, {
[1] = {},
})
return require("Module:links").section_link(args[1])
end
return export