Модул:Ping user

Извор: Викизворник
Иди на навигацију Иди на претрагу

Документација за овај модул се може направити на Модул:Ping user/док

local export = {}

local match = string.match

local function link(username, link_text)
	if type(username) ~= "string" then
		error('Функција „веза” захтева аргумент ниске.')
	end
	
	local namespace = match(username, "^(.+):")
	local userpage
	if namespace and namespace ~= "Корисник" then
		if match(username, "^%x%x?%x?%x?:%x%x?%x?%x?:%x%x?%x?%x?:%x%x?%x?%x?:%x%x?%x?%x?:%x%x?%x?%x?:%x%x?%x?%x?:%x%x?%x?%x?$") then
			userpage = username
		else
			error('Корисник „' .. username .. '” садржи неисправан именски простор „' .. tostring(namespace) .. '”.')
		end
	else
		userpage = match(username, ":(.+)$") or username
	end
	
	if not link_text then
		link_text = userpage
	end
	
	return "[[Корисник:" .. userpage .. "|" .. link_text .. "]]"
end

function export.reply_to(frame)
	local params = {
		[1] = { list = true, allow_holes = true },
		["alt"] = { list = true, allow_holes = true },
		["p"] = { allow_empty = true },
	}
	
	local args = require("Module:parameters").process(frame:getParent().args, params)
	local usernames = args[1]
	local link_text = args["alt"]
	local prefix = "@"
	local postfix = args.p or ":"
	local namespace = mw.title.getCurrentTitle().nsText
	
	local output = {}
	
	if #usernames == 0 then
		if namespace == "Шаблон" then
			usernames = { "Пример~srwiktionary", maxindex = 1 }
		else
			error("Грешка у шаблону {{одговор}}: Корисничко име није задато.")
		end
	end
	
	for i = 1, math.max(usernames.maxindex, link_text.maxindex) do
		table.insert(output, link(usernames[i], link_text[i]))
	end
	
	output = prefix .. table.concat(output, ", ") .. postfix
	
	return output
end

return export