Hopp til innhald

Modul:links/templates

Frå Wiktionary - den frie ordboka

Dokumentasjon for modulen kan opprettast på Modul:links/templates/dok

local m_links = require("Module:links")
local m_languages = require("Module:languages")

local export = {}

local langError = m_languages.err

-- 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"},
		["g"] = {list = true},
		["k"] = {list = true, alias_of = "g"},
		["gloss"] = {},
		["id"] = {},
		["lit"] = {},
		["pos"] = {},
		["t"] = {alias_of = "gloss"},
		["tr"] = {},
		["sc"] = {},
	}
	
	-- 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]
	
	-- 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 = m_languages.getByCode(lang) or langError(lang, 1)
	sc = (sc and (require("Module:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
	
	if not term and not alt and frame.args["demo"] then
		term = frame.args["demo"]
	end
	
	-- Forward the information to full_link
	return m_links.full_link({lang = lang, sc = sc, term = term, alt = alt, id = args["id"], tr = args["tr"], genders = args["g"], gloss = args["gloss"], pos = args["pos"], lit = args["lit"]}, 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 = m_languages.getByCode(lang) or langError(lang, 1)
	
	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 = require("Module: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 = 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 m_links.section_link(args[1])
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 m_links.light_link{ langCode = args[1], term = args[2], alt = args[3], scCode = args.sc or "Latn", langName = args.langname }
end

return export