มอดูล:Navbox Canada

-- This module implements 
local p = {}
local Navbox = require('Module:Navbox')
local templatestyles = 'Navbox Canada/styles.css'
function p.navbox(frame)
	-- table for args passed to navbox
	local targs = {}
	-- helper functions
	local function isnotempty(t) return t and t ~=  end
	local function prependarg(k, v)	targsk = v .. (targsk or ) end
	local listcount = 0
	local collapsiblegroups = nil
	local firstnum = 1
	local lastnum = 0
	local leaf = nil
	local borders = 
	local ischild = nil
	local topborder, notopborder = nil, nil
	local bottomborder, nobottomborder = nil, nil
	local tstyles = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
	-- process args, almost all of which are just copied to targs
	for k,v in pairs(frame:getParent().args) do
		if type(k) == 'string' and k:match('^list0-90-9*$') then
			if isnotempty(v) then
				listcount = listcount + 1
				local num = mw.ustring.gsub(k,'^list(0-90-9*)$', '%1')
				firstnum = (tonumber(num)  lastnum or listcount == 1) and tonumber(num) or lastnum
				targsk = v
			end
		elseif k == 'leaf' and isnotempty(v) then
			leaf = 1
		elseif k == 'collapsible groups' and isnotempty(v) then
			collapsiblegroups = 1
		elseif k == 'topborder' and isnotempty(v) then
			topborder = 1
		elseif k == 'notopborder' and isnotempty(v) then
			notopborder = 1
		elseif k == 'bottomborder' and isnotempty(v) then
			bottomborder = 1
		elseif k == 'nobottomborder' and isnotempty(v) then
			nobottomborder = 1
		elseif isnotempty(v) then
			targsk = v
		end
	end
	-- child or subgroup
	if targs'border' or targs1 or targs'1' then
		local v = targs'border' or targs1 or targs'1'
		if v == 'child' or v == 'subgroup' then
			ischild = 1
		end
	end
	-- hlist bodyclass
	prependarg('bodyclass', 'navbox-canada hlist ')
	-- leaf
	if leaf then
		prependarg('title', 
				 ..
				'alt=' .. 
				' ')
	end
	-- aboveclass
	prependarg('aboveclass', 'navbox-canada-t ')
	-- groupclass
	prependarg('groupclass', 'navbox-canada-a ')
	-- imageclass
	if targs'image' then
		borders = (notopborder == nil and 't' or )
		if targs'below' or ischild ~= nil then
			borders = borders .. (nobottomborder == nil and 'b' or )
		else
			borders = borders .. (bottomborder == 1 and 'b' or )
		end
		if borders ~=  then
			prependarg('imageclass', 'navbox-canada-' .. borders .. ' ')
		end
	end
	-- first and last list class
	if lastnum == firstnum then
		borders = 
		if collapsiblegroups == nil and ischild == nil then
			borders = borders .. (notopborder == nil and 't' or )
		end
		if targs'below' or ischild ~= nil then
			borders = borders .. (nobottomborder == nil and 'b' or )
		else
			borders = borders .. (bottomborder == 1 and 'b' or )
		end
		if borders ~=  then
			prependarg('list' .. firstnum .. 'class', 'navbox-canada-' .. borders .. ' ')
		end
	elseif lastnum > firstnum then
		if collapsiblegroups == nil and notopborder == nil then
			prependarg('list' .. firstnum .. 'class', 'navbox-canada-t ')
		end
		if (targs'below' and nobottomborder == nil) or (bottomborder == 1) then
			prependarg('list' .. lastnum .. 'class', 'navbox-canada-b ')
		end
	end
	-- hack for https://phabricator.wikimedia.org/T200206
	if targs'title' and targs'title' ~=  then
		prependarg('title', tstyles)
		tstyles = 
	end
	-- pass the process args to navbox or navbox with collapsible groups
	if collapsiblegroups then
		return tstyles .. frame:expandTemplate{ title = 'Navbox with collapsible groups', args = targs }
	else
		return tstyles .. Navbox._navbox(targs)
	end
end
return p