require('Module:No globals') local getArgs = require('Module:Arguments').getArgs local convert = require('মডিউল:সংখ্যা রূপান্তরকারী').convert  local p = {}  local function deflag(s) 	s = mw.ustring.gsub(s or , '%[%[[Fe][Ii][Ll][Ee]:[^%[%]]*%]%]', ) 	s = mw.ustring.gsub(s, '%[%[[Ii][Mm][Aa][Gg][Ee]:[^%[%]]*%]%]', ) 	s = mw.ustring.gsub(s, '%[%[চিত্র:[^%[%]]*%]%]', ) 	s = mw.ustring.gsub(s, '<[^<>]*>', ) 	s = mw.ustring.gsub(s, '%s*%([A-Z][A-Z][A-Z]%)%s*$', ) 	while s:match('^%s*&[Nn][Bb][Ss][Pp];%s*') do 		s = mw.ustring.gsub(s, '^%s*&[Nn][Bb][Ss][Pp];%s*', ) 	end 	s = mw.ustring.gsub(s, '%s*&[Nn][Bb][Ss][Pp];%s*$', ) 	s = mw.ustring.gsub(s, '%s%s+', ' ') 	s = mw.ustring.gsub(s, '^%s*(.-?)%s*$', '%1') 	return s end  function p.createTable(frame, args) 	if not args then 		args = getArgs(frame) 	end      local team = args['team'] or 'জাতি' 	local root = mw.html.create() 	local host = args['host'] or 	local hostColor = '#ccccff' 	local defaultRowColor = '#f8f9fa' 	local flagTemplate = args['flag_template'] or 'flagteam' 	local event = args['event'] 	local legendpos = (args['legend_position'] or 't'):lower() 	local header, footer = , 	local totalGold = 0 	local totalSilver = 0 	local totalBronze = 0 	 	local remainingGold = 0 	local remainingSilver = 0 	local remainingBronze = 0 	local remainingStart = 0 	local remainingEnd = 0 	local limitReached = false 	local showLimit = tonumber(args['show_limit'])  	-- build the legend 	if host ~=  then 		if args['name_' .. host] then 			host = args['name_' .. host] 			host = 'স্বাগতিক জাতি (' .. deflag(host) .. ')' 		elseif host:match('^([A-Z][A-Z][A-Z])') then 			host = frame:expandTemplate{title = flagTemplate, args = {host, event} } 			host = 'স্বাগতিক জাতি (' .. deflag(host) .. ')' 		end 		host = host .. (args['host_note'] or ) 		host = frame:expandTemplate{title = 'রঙের বাক্স', args = {hostColor, ' * ', 'border=darkgray'}} ..' '.. host 	end 	 	local leading =  	if args['leading'] then 		leading = frame:expandTemplate{title = 'legend', args = {'#E9D66B', "সেই ক্রীড়ায় শীর্ষে"}} 	end 	 	if legendpos == 't' then 		header = header .. host .. leading 	else 		footer = footer .. host .. leading 	end 	 	root = root 		:tag('table') 		:addClass('wikitable') 		:addClass('sortable') 		:addClass('plainrowheaders') 		:addClass('jquery-tablesorter') 		:css('text-align', 'center') 	 	root:tag('caption') 		:wikitext(args['caption']) 	-- add the header row 	local row = root:tag('tr') 	 	if args['hide_rank'] then else 		row:tag('th') 			:wikitext('<abbr title="অবস্থান">অব') 	end 	row 		:tag('th') 			:wikitext(team) 		:tag('th') 			:addClass('headerSort') 			:css('width', '4em') 			:css('background-color', 'gold') 			:wikitext('স্বর্ণ') 		:tag('th') 			:addClass('headerSort') 			:css('width', '4em') 			:css('background-color', 'silver') 			:wikitext('রৌপ্য') 		:tag('th') 			:addClass('headerSort') 			:css('width', '4em') 			:css('background-color', '#c96') 			:wikitext('ব্রোঞ্জ') 		:tag('th') 			:css('width', '4em') 			:wikitext('মোট') 	 	-- enumerate the rows 	local rowNums = {} 	 	for k,v in pairs(args) do 		k = ..k 		local IOC = k:match('^gold_([A-Z][A-Z][A-Z])$') or k:match('^gold_(%d+)$') 		if IOC then 			local gold   = (tonumber(args['gold_' .. IOC]) or 0) 			local silver = (tonumber(args['silver_' .. IOC]) or 0) 			local bronze = (tonumber(args['bronze_' .. IOC]) or 0) 			local noskip = args['skip_' .. IOC] and 0 or 1 			local nation = args['name_' .. IOC] or  				frame:expandTemplate{title = flagTemplate, args = {IOC, event} } 			nation = deflag(nation) 			if nation:match('%[%[[^%[%]%|]*%|([^%[%]]*)%]%]') then 				nation = nation:match('%[%[[^%[%]%|]*%|([^%[%]]*)%]%]') 			end 			if nation:match('%[%[([^%[%]%|]*)%]%]') then 				nation = nation:match('%[%[([^%[%]%|]*)%]%]') 			end 			table.insert(rowNums, {gold, silver, bronze, noskip, nation, IOC})  		end 	end 	if args['team'] == 'Games' then 		table.sort(rowNums, function (a,b) 			return  a[5] < b[5] 			end 		) 	else 		table.sort(rowNums, function (a, b)  			return a[1] > b[1] or (a[1] == b[1] and a[2] > b[2])  				or (a[1] == b[1] and a[2] == b[2] and a[3] > b[3])  				or (a[1] == b[1] and a[2] == b[2] and a[3] == b[3] and a[4] > b[4]) 				or (a[1] == b[1] and a[2] == b[2] and a[3] == b[3] and a[4] == b[4] and a[5] < b[5]) 				end 		) 	end 	 	local lastGold, lastSilver, lastBronze = -1 	local rank = 0 	local lastspan, lastrankcell = 1, nil 	for i, anum in ipairs(rowNums) do 		local IOC = anum[6] 		if args['skip_' .. IOC] then  			lastGold, lastSilver, lastBronze, lastspan = -1, -1, -1, 1 		else  			rank = rank + 1  		end 		local nation = args['name_' .. IOC] or  			frame:expandTemplate{title = flagTemplate, args = {IOC, event} } 		local gold   = tonumber(args['gold_' .. IOC]) or 0 		local silver = tonumber(args['silver_' .. IOC]) or 0 		local bronze = tonumber(args['bronze_' .. IOC]) or 0 		local isHost = args['host_' .. IOC] 		-- this is mainly for the parameter names example so you can override it. 		local total  = args['total_' .. IOC] or gold + silver + bronze 		local color = isHost and hostColor or defaultRowColor  		if args['grand_total'] then else 				totalGold = totalGold + gold 				totalSilver = totalSilver + silver 				totalBronze = totalBronze + bronze 		end  		if args['host_' .. IOC] then 			nation = nation .. '*' 		end  		if args['note_' .. IOC] then 			nation = nation .. args['note_' .. IOC] 		end  		if showLimit and (rank>showLimit) then  			if remainingStart == 0 then remainingStart = rank end 			limitReached = true 			remainingGold = remainingGold + gold 			remainingSilver = remainingSilver + silver 			remainingBronze = remainingBronze + bronze 		else 			local row 			if args['leading_' .. IOC] then 				row = root:tag('tr'):css('background-color', '#E9D66B') 				color = '#E9D66B' 			else 				row = root:tag('tr') 			end 				 			--Don't put the color on the row because of ranks spanning multiple rows.  			--:css('background-color', color) 			 			if args['hide_rank'] then else 				if (gold == lastGold) and (silver == lastSilver) and (bronze == lastBronze) then 					lastspan = lastspan + 1 					lastrankcell:attr('rowspan',lastspan) 				else 					lastspan = 1 					if args['skip_' .. IOC] then 						lastrankcell = row:tag('td'):wikitext(frame:expandTemplate{title = 'বাছাই', args = {'999', '–'}}) 					else 						lastrankcell = row:tag('td'):wikitext(convert('bn', tostring(rank))) 						lastGold   = gold 						lastSilver = silver 						lastBronze = bronze 					end 				end 			end 			row:tag('th') 					:attr('scope', 'row') 					:css('background-color', color) 					:css('text-align','left') 					:wikitext(nation) 				:tag('td') 					:wikitext(convert('bn', tostring(gold))) 				:tag('td') 					:wikitext(convert('bn', tostring(silver))) 				:tag('td') 					:wikitext(convert('bn', tostring(bronze))) 				:tag('td') 					:wikitext(convert('bn', tostring(total))) 		end 		remainingEnd = rank 	end 	 	if limitReached then 		root:tag('tr') 				:tag('td') 					:wikitext(convert('bn', tostring(remainingStart))..'–'..convert('bn', tostring(remainingEnd))) 				:tag('td') 					:css('font-style', 'italic') 					:css('text-align','center') 					:wikitext(args['remaining_link'] or args['remaining_text'] or 'অবশিষ্ট') 				:tag('td') 					:wikitext(convert('bn', tostring(remainingGold))) 				:tag('td') 					:wikitext(convert('bn', tostring(remainingSilver))) 				:tag('td') 					:wikitext(convert('bn', tostring(remainingBronze))) 				:tag('td') 					:wikitext(convert('bn', tostring(remainingGold+remainingSilver+remainingBronze))) 	end  	if team:match('^[A-Z][A-Z][A-Z]$') or team:match('>[A-Z][A-Z][A-Z]<') then else team = team:lower() end 	if team:match('^games$') then team = 'game' end 	 	local colspan  	if args['hide_rank'] then  		colspan = 1  	else  		colspan = 2	 	end 	if args['hide_totals'] then else 		root:tag('tr') 			:css('background-color', '#eaebef') 			:addClass('sortbottom') 			:tag('th') 				:wikitext('মোট ('..convert('bn', tostring(remainingEnd))..'টি '..team..')') 				:attr('scope', 'row') 				:css('background-color', '#eaebef') 				:css('font-weight', 'bold') 				:css('text-align','center') 				:attr('colspan', colspan) 			:tag('td') 				:wikitext(convert('bn', args['total_gold']) or convert('bn', tostring(totalGold))) 				:css('font-weight', 'bold') 			:tag('td') 				:wikitext(convert('bn', args['total_silver']) or convert('bn', tostring(totalSilver))) 				:css('font-weight', 'bold') 			:tag('td') 				:wikitext(convert('bn', args['total_bronze']) or convert('bn', tostring(totalBronze))) 				:css('font-weight', 'bold') 			:tag('td') 				:wikitext(convert('bn', args['grand_total']) or convert('bn', tostring(totalGold+totalSilver+totalBronze))) 				:css('font-weight', 'bold') 	end  	-- Build the rest of the footer 	if args['source'] or args['notes'] then 		if footer ~=  then 			footer = footer .. '' 		end 		footer = frame:expandTemplate{ title = 'সূত্র শুরু' } .. footer 		 		if args['source'] then  			footer = footer .. 'উৎস: ' .. args['source'] 		end 		if args['notes'] then 			if args['source'] then 				footer = footer .. '' 			end 			footer = footer .. 'টীকা: ' .. args['notes'] 		end 		footer = footer .. frame:expandTemplate{ title = 'সূত্র শেষ' } 	end  	return header .. tostring(root) .. footer end  return p