Mô đun:Redirect template

Từ Từ điển tri thức Hội Thánh của Đức Chúa Trời
Bước tới điều hướng Bước tới tìm kiếm

Có thể viết tài liệu về mô đun này tại Mô đun:Redirect template/tài liệu.

require('strict')

local p = {}

-- key is beginning of arg name. value is table with namespace number and link
-- alternatively, a function taking the namespace number and returning a validity
-- can be used
local namespaceCategories = {
	all = { function() return true end },
	main = { 0, '[[Wikipedia:Bài bách khoa là gì?|chính]]' },
	help = { 12, '[[:en:wp:help namespace|trợ giúp]]' },
	portal = { 100, '[[Wikipedia:Cổng thông tin|cổng thông tin]]' },
	talk = { function(n) return n > 0 and n%2 == 1 end, '[[:en:Help:Using talk pages|thảo luận]]' },
	template = { 10, '[[:en:wp:template namespace|bản mẫu]]' },
	wikipedia = { 4, '[[:en:wp:project namespace|dự án Wikipedia]]' },
	category = { 14, '[[Wikipedia:Thể loại|thể loại]]' },
	user = { 2, '[[Wikipedia:Trang cá nhân|cá nhân]]' },
}

-- remove whitespaces from beginning and end of args
local function valueFunc(key, val)
	if type(val) == 'string' then
		val = val:match('^%s*(.-)%s*$')
		if val == '' then
			return nil
		end
	end
	return val
end

local function getPrettyName(args)
	for k in pairs(namespaceCategories) do
		if args[k .. ' category'] then
			return string.format("'''[[:Thể loại:%s|%s]]''': ", args[k .. ' category'], args.name)
		end
	end
	return string.format("'''%s''': ", args.name)
end

function p.main(frame)
	local args = require('Mô đun:Arguments').getArgs(frame, {wrappers = 'Bản mẫu:Redirect template', valueFunc = valueFunc})
	local namespace = mw.title.getCurrentTitle().namespace

	--- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed
	local beCompatibleWithBug12974 = args.info and (args.info:find('^[:;#*]', 1) == 1 or args.info:find('{|', 1, true) == 1) and '\n' or ' '
	
	local content = string.format('\n<div class="rcat %s">\n*%sĐây là một trang đổi hướng%s%s.%s%s\n</div>',
		args.id and ('rcat-' .. string.gsub(args.id, ' ', '_')) or '',
		args.name and getPrettyName(args) or '',
		args.from and (' từ ' .. args.from) or '',
		args.to and (' đến ' .. args.to) or '',
		args.info and beCompatibleWithBug12974 or '',
		args.info or ''
	)
	
	for k,v in pairs(namespaceCategories) do
		if args[k .. ' category'] then
			if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then
				content = content .. string.format('[[Thể loại:%s]]', args[k .. ' category'])
			elseif args['other category'] then
				content = content .. string.format('[[Thể loại:%s]]', args['other category'])
			else
				content = content .. frame:expandTemplate{title = 'Sai bản mẫu đổi hướng', args = {v[2]}}
			end
		end
	end

	if namespace == 0 then
		local yesno = require('Mô đun:Yesno')
		if yesno(args.printworthy) == true then
			return content .. '[[Thể loại:Trang đổi hướng có in]]'
		elseif yesno(args.printworthy) == false then
			return content .. '[[Thể loại:Trang đổi hướng không cần in]]'
		end
	end
	return content
end

return p