-- This module implements .  local p = {}  local messageBox = require('Module:Message box') local yesno = require('Module:Yesno') local dateModule = require('Module:Date')._Date local listModule = require('Module:List').horizontal  -- Create variable used in other functions local pageType if (mw.title.getCurrentTitle():inNamespace(1)) then 	pageType = "article" else 	pageType = "page" end  -- Build the HTML for collapsing lists local function makeTable(list, text) 	local collapseTable = mw.html.create("table") 	collapseTable 		:attr({ 			class = "mw-collapsible mw-collapsed", 			cellspacing = 0, 			cellpadding = 0 		}) 		:css({ 			width = "100%", 			background = "transparent", 			margin = 0, 			padding = "0.5em 0 0" 		}) 		:tag("tr"):tag("th"):wikitext(text):cssText("text-align: left") 		:tag("tr"):tag("td"):wikitext(mw.ustring.format("\n%s", list)) 	return collapseTable end  local function singleText(args) 	local date = args["date"] or args["date1"] or "" 	local from = args["from"] or args["from1"] or "" 	local to = args["destination"] or args["destination1"] or args["to1"] or args["to"] or "" 	local result = args["result"] or args["result1"] or "" 	local link = args["link"] or args["link1"] or "" 	local dateformat = args["dateformat"] or "dmy" 	local text = "" 	if (date ~= "") then 		if dateModule(date) then 			date = dateModule(date):text(dateformat) 		end 		text = mw.ustring.format("%s সালে, প্রস্তাব করা হয়েছিল যে এই %s পাতাটি স্থানান্তর করা হোক", date, pageType) 	else 		text = mw.ustring.format("অতীতে প্রস্তাবিত হয়েছিল যে এই %s পাতাটিকে স্থানান্তর করা হোক", pageType) 	end 	if (from ~= "") then 		text = mw.ustring.format("%s থেকে [%s %s]", text, tostring(mw.uri.fullUrl(from, {redirect = "no"} )), from) 	end 	if (to ~= "") then 		text = mw.ustring.format("%s হতে %s", text, to) 	end 	text = mw.ustring.format("%s.", text) 	if (result ~= "") then 		if (link ~= "") then 			text = mw.ustring.format("%s এই আলোচনার ফলাফল ছিল %s.", text, link, result) 		else 			text = mw.ustring.format("%s এই আলোচনার ফলাফল ছিল %s.", text, result) 		end 	elseif (link ~= "") then 		text = mw.ustring.format("%s আলোচনা দেখুন।", text, link) 	end 	return text end  local function row(args, i) 	local date = args["date" .. i] or "" 	local from = args["from" .. i] or "" 	local dateformat = args["dateformat"] or "dmy" 	local to = args["destination" .. i] or args["to" .. i] or "" 	local result = mw.language.getContentLanguage():ucfirst(args["result" .. i]) or "" 	local link = args["link" .. i] or "" 	local rowText = mw.ustring.format("\n*%s", result) 	if (date ~= "") then 		if dateModule(date) then 			date = dateModule(date):text(dateformat) 		end 		rowText = mw.ustring.format("%s, %s", rowText, date) 	end 	if (from ~= "") then 		rowText = mw.ustring.format("%s, [%s %s] হতে", rowText, tostring(mw.uri.fullUrl(from, {redirect = "no"} )), from) 		if (to ~= "") then 			rowText = mw.ustring.format("%s হতে %s", rowText, to) 		end 	elseif (to ~= "") then 		rowText = mw.ustring.format("%s, হতে %s", rowText, to) 	end 	if (link ~= "") then 		rowText = mw.ustring.format("%s, আলোচনা দেখুন", rowText, link) 	end 	rowText = rowText .. "." 	return rowText end  local function list(args) 	local text = "" 	if (args["result1"]) then -- Support to1 and to in case of multiple rows 		text = mw.ustring.format("%s%s", text, row(args, 1)) 	else 		text = mw.ustring.format("%s%s", text, row(args, "")) 	end 	local i = 2 	while (args["result" .. i]) do 		text = mw.ustring.format("%s%s", text, row(args, i)) 		i = i + 1 -- Check if to(i+1) exist 	end 	return text end 	 local function manualList(args) 	local manualListText = "" 	if (args["list"]) then 		if (args["result"] or args["result1"]) then 			manualListText = mw.ustring.format("%s\nঅন্যান্য আলোচনা: \n%s", manualListText, args["list"]) 		else 			manualListText = mw.ustring.format("%s\n%s", manualListText, args["list"]) 		end 	end 	if (args["oldlist"]) then 		if (yesno(args["collapse"]) or yesno(args["collapsed"])) then 			manualListText = mw.ustring.format("%s\nপূর্ববর্তী আলোচনা: \n%s", manualListText, tostring(args["oldlist"])) 		else 			manualListText = mw.ustring.format("%s\n%s", manualListText, tostring(makeTable(args["oldlist"], "পূর্ববর্তী আলোচনা:"))) 		end 	end 	return manualListText end  local function showLogs(args) 	local logList, i = {}, 1 	while (args["title" .. i]) do 		local query = mw.uri.buildQueryString({ 			["page"] = args["title" .. i], 			["type"] = "move" 		}) 		if (i == 1) then -- Hacky way to make the hlist go after "move logs" 			table.insert(logList, mw.ustring.format("\nMove logs: [%s %s]", tostring(mw.uri.canonicalUrl("Special:Log", query)), args["title" .. i])) 		else 			table.insert(logList, mw.ustring.format("[%s %s]", tostring(mw.uri.canonicalUrl("বিশেষ:লগ", query)), args["title" .. i])) 		end 		i = i + 1 	end 	logList["style"] = "padding-top: 0.5em;" 	return listModule(logList) end  local function evaluate(args) 	local text = "" 	local is_collapsed = yesno(args["collapse"]) or yesno(args["collapsed"]) 	local has_log_args = args["title"] or args["title1"] 	local has_manual_list = args["list"] or args["oldlist"] 	local has_multiple_rows = args["result1"] 	 	if (has_log_args) then 		text = mw.ustring.format("%s%s", text, showLogs(args)) 	end 	 	if (not is_collapsed or has_log_args) then 		-- if the template is collapsed and there are no log arguments, 		-- then we already have "Discussions:" in bold text in bannerText(), 		-- so we don't need to repeat it here 		text = mw.ustring.format("%s\nDiscussions: \n", text) 	end 	 	-- This makes sure we don't show the single version when there's a log or manual list 	if (args["result"]) then 		if (has_log_args or has_manual_list or args["result2"]) then 			text = mw.ustring.format("%s%s", text, list(args)) 		else 			text = singleText(args) 		end 	end 	if (has_multiple_rows) then 		text = mw.ustring.format("%s%s", text, list(args)) 	end 	if (has_manual_list) then 		text = mw.ustring.format("%s%s", text, manualList(args)) 	end 	if (not args["result"] and not has_multiple_rows and not has_manual_list and not has_log_args) then 		return "" 	end  	return text end  local function bannerText(args) 	local blurb = mw.ustring.format("এই %s পাতাটি অতীতে স্থানান্তরের জন্য মনোনীত হয়েছিল।" .. 		" আবার মনোনয়নের চিন্তা করে থাকলে অনুগ্রহ করে পূর্ববর্তী আলোচনাগুলো পর্যালোচনা করুন।", pageType) 	local list = ""  	if (yesno(args["collapse"]) or yesno(args["collapsed"])) then 		if (args["title"] or args["title1"]) then 			list = mw.ustring.format("%s%s", blurb, tostring(makeTable(evaluate(args), "লগ ও আলোচনা:"))) 		else 			list = mw.ustring.format("%s%s", blurb, tostring(makeTable(evaluate(args), "আলোচনা:"))) 		end 	else 		list = evaluate(args)  		if (mw.ustring.find(list, "proposed that this") == nil) then 			list = mw.ustring.format("%s%s", blurb, evaluate(args)) 		end 	end 	 	return list end  local function renderBanner(args) 	return messageBox.main('tmbox', { 		small = yesno(args["small"]), 		type = 'move', 		text = bannerText(args) 	}) end  function p.main(frame) 	local args = require('Module:Arguments').getArgs(frame) 	return renderBanner(args) end  return p