Модуль:Кароткая спасылка на скан

З пляцоўкі Вікікрыніцы

Дакументацыю да гэтага модуля можна стварыць у Модуль:Кароткая спасылка на скан/Дакументацыя

local p = {} --p азначае пакет

local getArgs = require('Модуль:Arguments').getArgs

-- простая функцыя, якая стварае спасылку на зададзеную старонку індэксу
local function index_link(index, display)
	return "[[" .. "Індэкс:" .. index .. "|" .. display .. "]]"	
end

-- бярэ n-ую спасылку ў аргумэнтах разам з назвай, калі ёсьць
local function get_link(args, n)
	local display = n
	local argname = 'name' .. n
	if args[argname] ~= nil then
		display = args[argname]
	end

	return index_link(args[n], display)
end

--[=[
Вяртае адфарматаваную кароткую спасылку на скан
Аргумэнты:
   1,2,3....        : Старонкі індэксаў, на якія спаслацца
   name1, name2, ...: Тэкст, які выведзецца для адпаведнай старонкі індэксу
]=]
function _small_scan_link(args)
	local s = ''

	if args[1] == nil then
		error("Патрэбная прынамсі адна індэкс-старонка", 0) 	
	end
	
	if args[2] == nil then
		-- адзіны аргумэнт

		local target = args[1]
		local link_text = ""
		-- калі ёсьць назва, то ўзяць яе
		if args['name1'] ~= nil then
			link_text = args['name1']
		else
			-- назва ў залежнасьці ад існаваньня мэты
			if mw.title.new("Індэкс:" .. target).exists then
				link_text = "праект расшыфраваньня"
			else
				link_text = "пачаць расшыфраваньне"
			end
		end
		s = index_link(target, link_text)
	else
		-- некалькі пазыцыйных аргумэнтаў

		local i = 1
		s = "тамы расшыфраваньня: "
		-- перабраць пазыцыйныя парамэтры
		while args[i] ~= nil do
			s = s .. get_link(args, i)
			i = i + 1
			
			if args[i] ~= nil then
				s = s .. ", "
			end
		end
	end

	return "<span class=\"scanlink\" style=\"font-size: 83%;\">(" .. s .. ")</span>"
end

function p.small_scan_link(frame)
	local args = getArgs(frame)
	return _small_scan_link(args)
end

return p