Module:links/templates: Difference between revisions

no edit summary
No edit summary
No edit summary
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:
]=]
]=]


-- Used in [[Template:l]] and [[Template:m]].
do
function export.l_term_t(frame)
local function get_args(frame)
local face = frame.args["face"]
-- `compat` is a compatibility mode for {{term}}.
local allowSelfLink = frame.args["notself"]; allowSelfLink = not allowSelfLink or allowSelfLink == ""
-- If given a nonempty value, the function uses lang= to specify the
-- language, and all the positional parameters shift one number lower.
local params = {
local iargs = frame.args
[1] = {required = true},
iargs.compat = iargs.compat and iargs.compat ~= ""
[2] = {},
iargs.langname = iargs.langname and iargs.langname ~= ""
[3] = {},
iargs.notself = iargs.notself and iargs.notself ~= ""
[4] = {alias_of = "gloss"},
local alias_of_4 = {alias_of = 4}
["accel-form"] = {},
local boolean = {type = "boolean"}
["accel-translit"] = {},
local plain = {}
["accel-lemma"] = {},
local params = {
["accel-lemma-translit"] = {},
[1] = {required = true, type = "language", default = "und"},
["accel-gender"] = {},
[2] = plain,
["accel-nostore"] = {type = "boolean"},
[3] = plain,
["g"] = {list = true},
[4] = plain,
["gloss"] = {},
["g"] = {list = true},
["id"] = {},
["gloss"] = alias_of_4,
["lit"] = {},
["id"] = plain,
["pos"] = {},
["lit"] = plain,
["t"] = {alias_of = "gloss"},
["pos"] = plain,
["tr"] = {},
["sc"] = {type = "script"},
["ts"] = {},
["t"] = alias_of_4,
["sc"] = {},
["tr"] = plain,
["w"] = {type = "boolean", default = false},
["ts"] = plain,
["name"] = {type = "boolean", default = true},
["accel-form"] = plain,
}
["accel-translit"] = plain,
["accel-lemma"] = plain,
-- Compatibility mode for {{term}}.
["accel-lemma-translit"] = plain,
-- If given a nonempty value, the function uses lang= to specify the
["accel-gender"] = plain,
-- language, and all the positional parameters shift one number lower.
["accel-nostore"] = boolean,
local compat = (frame.args["compat"] or "") ~= ""
}
if iargs.compat then
if compat then
params["lang"] = {type = "language", default = "und"}
params["lang"] = {},
remove(params, 1)
table.remove(params, 1)
alias_of_4.alias_of = 3
end
end
if iargs.langname then
local args = require("Module:parameters").process(frame:getParent().args, params)
params["w"] = boolean
end
local lang = args[compat and "lang" or 1]
return process_params(frame:getParent().args, params), iargs
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 = require("Module:languages").getByCode(lang, 1, "allow etym")
lang = require("Module:languages").getNonEtymological(lang)
if sc then
sc = require("Module:scripts").getByCode(sc, "sc")
end
if not term and not alt and frame.args["demo"] then
term = frame.args["demo"]
end
end
local language_name = args.w and "[[" .. lang:getCanonicalName() .. "]]" or lang:getCanonicalName()
-- Used in [[Template:l]] and [[Template:m]].
function export.l_term_t(frame)
if term == "-" then
local args, iargs = get_args(frame)
return language_name
local compat = iargs.compat
else
local lang = args[compat and "lang" or 1]
return (args.name and language_name .. " " or "") ..
require("Module:links").full_link(  
local term = args[(compat and 1 or 2)]
{
local alt = args[(compat and 2 or 3)]
lang = lang,  
term = term ~= "" and term or nil
sc = sc,  
term = term,
if not term and not alt and iargs.demo then
alt = alt,  
term = iargs.demo
id = args["id"],  
end
tr = args["tr"],
ts = args["ts"],
local langname = iargs.langname and (
genders = args["g"],  
args.w and lang:makeWikipediaLink() or
gloss = args["gloss"],
lang:getCanonicalName()
pos = args["pos"],  
) or nil
lit = args["lit"],
nocont = not frame.args["from_l"],
if langname and term == "-" then
accel = args["accel-form"] and {
return langname
form = args["accel-form"],
end
translit = args["accel-translit"],
-- Forward the information to full_link
lemma = args["accel-lemma"],
return (langname and langname .. " " or "") .. require("Module:links").full_link(
lemma_translit = args["accel-lemma-translit"],
{
gender = args["accel-gender"],
lang = lang,
nostore = args["accel-nostore"],
sc = args.sc,
} or nil,
track_sc = true,
},
term = term,
face,
alt = alt,
allowSelfLink
gloss = args[4],
)
id = args["id"],
tr = args["tr"],
ts = args["ts"],
genders = args["g"],
pos = args["pos"],
lit = args["lit"],
nocont = iargs["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 export.ll(frame)
do
local params = {
local function get_args(frame)
[1] = { required = true },
local plain = {}
[2] = { allow_empty = true },
return process_params(frame:getParent().args, {
[3] = {},
[1] = {required = true, type = "language", default = "und"},
["notself"] = { type = "boolean", default = false },
[2] = {allow_empty = true},
["id"] = {},
[3] = plain,
}
["id"] = plain,
local args = require("Module:parameters").process(frame:getParent().args, params)
["sc"] = {type = "script"},
local allowSelfLink = not args["notself"]
})
local lang = args[1]
lang = require("Module:languages").getByCode(lang, 1, "allow etym")
lang = require("Module:languages").getNonEtymological(lang)
 
local text = args[2]
local alt = args[3]
if text == "" then
return alt or ""
end
end
local id = args["id"]
function export.ll(frame)
local args = get_args(frame)
return require("Module:links").language_link(
local lang = args[1]
{
local sc = args["sc"]
term = text,
local term = args[2]
alt = alt,
term = term ~= "" and term or nil
return require("Module:links").language_link{
lang = lang,
lang = lang,
id = id
sc = sc,
},
term = term,
allowSelfLink
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 params = {
local args = process_params(frame:getParent().args, {
[1] = {required = true, default = ""},
[1] = {required = true, default = ""},
}
})
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = require("Module:languages").getByCode("en")
local sc = require("Module:scripts").getByCode("Latn")
return require("Module:links").english_links(args[1])
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 params = {
local args = process_params(frame:getParent().args, {
[1] = {required = true, default = ""},
[1] = {required = true, default = ""},
}
})
local args = require("Module:parameters").process(frame:getParent().args, params)
args[1] = mw.text.trim(args[1])
args[1] = mw.text.trim(args[1])
Line 167: Line 174:
end
end


function export.section_link_t(frame)
function export.cap_t(frame)
local params = {
local args = process_params(frame:getParent().args, {
[1] = {},
[1] = {required = true},
}
["lang"] = {type = "language", default = "en"},
})
local args = require("Module:parameters").process(frame:getParent().args, params)
local term = args[1]
return require("Module:links").section_link(args[1])
return require("Module:links").full_link{
lang = args.lang,
term = term,
alt = term:gsub("^.[\128-\191]*", upper)
}
end
end


function export.language_name_link_t(frame)
function export.section_link_t(frame)
local face = frame.args["face"]
local args = process_params(frame:getParent().args, {
local allowSelfLink = frame.args["notself"]; allowSelfLink = not allowSelfLink or allowSelfLink == ""
[1] = {},
})
local params = {
return require("Module:links").section_link(args[1])
[1] = {required = true},
[2] = {},
[3] = {},
[4] = {alias_of = "gloss"},
["g"] = {list = true},
["gloss"] = {},
["id"] = {},
["lit"] = {},
["pos"] = {},
["t"] = {alias_of = "gloss"},
["tr"] = {},
["ts"] = {},
["sc"] = {},
["w"] = { type = "boolean", default = true },
}
-- 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"] = {},
table.remove(params, 1)
end
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = args[compat and "lang" or 1]
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 = require("Module:languages").getByCode(lang, 1, "allow etym", true)
local non_etym_lang = require("Module:languages").getNonEtymological(lang)
if sc then
sc = require("Module: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:getCanonicalName() .. "]]" or lang:getCanonicalName()
if term == "-" then
return language_name
else
return language_name .. " " ..
require("Module:links").full_link(  
{
lang = non_etym_lang,
sc = sc,
term = term,
alt = alt,
id = args["id"],
tr = args["tr"],
ts = args["ts"],
genders = args["g"],
gloss = args["gloss"],
pos = args["pos"],
lit = args["lit"]
},
face,
allowSelfLink
)
end
end
end


return export
return export