Mô đun:Navbox with collapsible groups

-- This module implements {{Navbox with collapsible groups}}
local q = {}
local Navbox = require('Mô đun:Navbox')

-- helper functions
local function concatstrings(s)
	local r = table.concat(s, '')
	if r:match('^%s*$') then r = nil end
	return r
end

local function concatstyles(s)
	local r = table.concat(s, ';')
	while r:match(';%s*;') do
		r = mw.ustring.gsub(r, ';%s*;', ';')
	end
	if r:match('^%s*;%s*$') then r = nil end
	return r
end

function q._navbox(pargs)
	-- table for args passed to navbox
	local targs = {}

	-- process args
	local passthrough = {
		['name']=true,['navbar']=true,['state']=true,['border']=true,
		['bodyclass']=true,['groupclass']=true,['listclass']=true,
		['style']=true,['bodystyle']=true,['basestyle']=true,
		['title']=true,['titleclass']=true,['titlestyle']=true,
		['above']=true,['aboveclass']=true,['abovestyle']=true,
		['below']=true,['belowclass']=true,['belowstyle']=true,
		['image']=true,['imageclass']=true,['imagestyle']=true,
		['imageleft']=true,['imageleftstyle']=true
	}
	for k,v in pairs(pargs) do
		if k and type(k) == 'string' then
			if passthrough[k] then
				targs[k] = v
			elseif (k:match('^list[0-9][0-9]*$') 
					or k:match('^content[0-9][0-9]*$') ) then
				local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1')
				if (targs['list' .. n] == nil and pargs['group' .. n] == nil
					and pargs['sect' .. n] == nil and pargs['section' .. n] == nil) then
					targs['list' .. n] = concatstrings(
						{pargs['list' .. n] or '', pargs['content' .. n] or ''})
				end
			elseif (k:match('^group[0-9][0-9]*$') 
					or k:match('^sect[0-9][0-9]*$') 
					or k:match('^section[0-9][0-9]*$') ) then
				local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1')
				if targs['list' .. n] == nil then
					local titlestyle = concatstyles(
						{pargs['groupstyle'] or '',pargs['secttitlestyle'] or '', 
							pargs['group' .. n .. 'style'] or '', 
							pargs['section' .. n ..'titlestyle'] or ''})
					local liststyle = concatstyles(
						{pargs['liststyle'] or '', pargs['contentstyle'] or '', 
							pargs['list' .. n .. 'style'] or '', 
							pargs['content' .. n .. 'style'] or ''})
					local title = concatstrings(
						{pargs['group' .. n] or '', 
							pargs['sect' .. n] or '',
							pargs['section' .. n] or ''})
					local list = concatstrings(
						{pargs['list' .. n] or '', 
							pargs['content' .. n] or ''})
					local state = (pargs['abbr' .. n] and pargs['abbr' .. n] == pargs['selected']) 
						and 'uncollapsed' or pargs['state' .. n] or 'collapsed'
					
					targs['list' .. n] = Navbox._navbox(
						{'child', navbar = 'plain', state = state,
						basestyle = pargs['basestyle'],
						title = title, titlestyle = titlestyle,
						list1 = list, liststyle = liststyle,
						listclass = pargs['list' .. n .. 'class'],
						image = pargs['image' .. n],
						imageleft = pargs['imageleft' .. n],
						listpadding = pargs['listpadding']})
				end
			end
		end
	end
	-- ordering of style and bodystyle
	targs['style'] = concatstyles({targs['style'] or '', targs['bodystyle'] or ''})
	targs['bodystyle'] = nil
	
	-- child or subgroup
	if targs['border'] == nil then targs['border'] = pargs[1] end

	return Navbox._navbox(targs)
end

function q.navbox(frame)
	local pargs = require('Mô đun:Arguments').getArgs(frame, {wrappers = {'Bản mẫu:Navbox with collapsible groups'}})

	-- Read the arguments in the order they'll be output in, to make references number in the right order.
	local _
	_ = pargs.title
	_ = pargs.above
	for i = 1, 20 do
		_ = pargs["group" .. tostring(i)]
		_ = pargs["list" .. tostring(i)]
	end
	_ = pargs.below

	return q._navbox(pargs)
end

return q
Chúng tôi bán
Bài viết liên quan
Discovery Channel - Through the Wormhole Season 8 vietsub
Discovery Channel - Through the Wormhole Season 8 vietsub
Thông qua lỗ giun mùa 8 (2017) là chương trình phim khoa học do Morgan Freeman dẫn dắt đưa chúng ta khám phá và tìm hiểu những kiến thức về lỗ sâu đục, lỗ giun hay cầu Einstein-Rosen
Một ma thần chưa rõ danh tính đang ngủ say tại quần đảo Inazuma
Một ma thần chưa rõ danh tính đang ngủ say tại quần đảo Inazuma
Giai đoạn Orobashi tiến về biển sâu là vào khoảng hơn 2000 năm trước so với cốt truyện chính, cũng là lúc Chiến Tranh Ma Thần sắp đi đến hồi kết.
Review cuốn sách I, Robot: The Illustrated Screenplay của Harlan Ellison
Review cuốn sách I, Robot: The Illustrated Screenplay của Harlan Ellison
I, Robot: The Illustrated Screenplay vốn ban đầu là một kịch bản do Harlan Ellison viết hồi cuối thập niên 70
[Chongyun] Thuần Dương Chi Thể - Trường sinh bất lão
[Chongyun] Thuần Dương Chi Thể - Trường sinh bất lão
Nếu ai đã từng đọc những tiểu thuyết tiên hiệp, thì hẳn là không còn xa lạ