Module:User:Benwing2/links/templates

local export = {}

--[=[	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 face = frame.args["face"] local allowSelfLink = frame.args["notself"]; allowSelfLink = not allowSelfLink or allowSelfLink == "" local params = { [1] = {required = true}, [2] = {},		[3] = {},		[4] = {alias_of = "gloss"}, ["accel-form"] = {}, ["accel-translit"] = {}, ["accel-lemma"] = {}, ["accel-lemma-translit"] = {}, ["accel-gender"] = {}, ["accel-nostore"] = {type = "boolean"}, ["g"] = {list = true}, ["gloss"] = {}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = {alias_of = "gloss"}, ["tr"] = {}, ["ts"] = {}, ["sc"] = {}, }	-- Compatibility mode for undefined:. -- 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] -- Tracking for missing language or und if not lang then require("Module:debug").track("link/no lang") elseif lang == "und" then require("Module: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 = require("Module:languages").getByCode(lang, 1, "allow etym") lang = require("Module:languages").getFull(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 -- Forward the information to full_link return require("Module:User:Benwing2/links").full_link( 		{			lang = 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"],			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 params = { [1] = { required = true }, [2] = { allow_empty = true }, [3] = {},		["notself"] = { type = "boolean", default = false }, ["id"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) local allowSelfLink = not args["notself"] local lang = args[1] lang = require("Module:languages").getByCode(lang, 1, "allow etym") lang = require("Module:languages").getFull(lang)

local text = args[2] local alt = args[3] if text == "" then return alt or "" end local id = args["id"] return require("Module:User:Benwing2/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 = require("Module:parameters").process(frame:getParent.args, params) return require("Module:User:Benwing2/links").english_links(args[1]) end

function export.linkify_t(frame) local params = { [1] = {required = true, default = ""}, }	local args = require("Module: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 = require("Module:parameters").process(frame:getParent.args, params) return require("Module:User:Benwing2/links").section_link(args[1]) end

function export.language_name_link_t(frame) local face = frame.args["face"] local allowSelfLink = frame.args["notself"]; allowSelfLink = not allowSelfLink or allowSelfLink == "" local params = { [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 = false }, }	-- Compatibility mode for undefined:. -- 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] -- Tracking for missing language or und if not lang then require("Module:debug").track("link/no lang") elseif lang == "und" then require("Module: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 = require("Module:languages").getByCode(lang, 1, "allow etym") local non_etym_lang = require("Module:languages").getFull(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:makeWikipediaLink or lang:getCanonicalName if term == "-" then return language_name else return language_name .. " " ..			require("Module:User:Benwing2/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

function export.light_link_t(frame) local params = { [1] = { required = true }, [2] = { required = true }, [3] = {},		["sc"] = {}, ["langname"] = { required = true }, }	local args = frame:getParent.args for key, value in pairs (params) do		if value.required then if not args[key] then error('Parameter "' .. key .. '" is required.') end end end return require("Module:User:Benwing2/links").light_link{ langCode = args[1], term = args[2], alt = args[3], scCode = args.sc or "Latn", langName = args.langname } end

return export