মডিউল:বিশ্ব প্রসঙ্গ

(মডিউল:World topic থেকে পুনর্নির্দেশিত)
local p = {}
local Navbox = require("Module:Navbox")
local country = {
    ["ইথিওপিয়ায়"] =   {""},
    ["আজারবাইজানে"] =   {""},
    ["জর্ডানে"] =   {""},
    ["আর্জেন্টিনায়"] =   {""},
    ["আর্মেনিয়ায়"] =   {""},
    ["ইরিত্রিয়ায়"] =   {""},
    ["স্পেনে"] =   {""},
    ["অস্ট্রেলিয়ায়"] =   {""},
    ["এস্তোনিয়ায়"] =   {""},
    ["ইসরায়েলে"] =   {""},
    ["মধ্য আফ্রিকান প্রজাতন্ত্রে"] =   {""},
    ["আফগানিস্তানে"] =   {""},
    ["আলবেনিয়ায়"] =   {""},
    ["জার্মানিতে"] =   {""},
    ["ইকুয়েডরে"] =   {""},
    ["সংযুক্ত আরব আমিরাতে"] =   {""},
    ["অ্যান্টিগুয়া ও বার্বুডায়"] =   {""},
    ["অ্যান্ডোরায়"] =   {""},
    ["ইন্দোনেশিয়ায়"] =   {""},
    ["অ্যাঙ্গোলায়"] =   {""},
    ["উরুগুয়েতে"] =   {""},
    ["উজবেকিস্তানে"] =   {""},
    ["উগান্ডায়"] =   {""},
    ["ইউক্রেনে"] =   {""},
    ["ইরানে"] =   {""},
    ["আয়ারল্যান্ডে"] =   {""},
    ["আইসল্যান্ডে"] =   {""},
    ["ইতালিতে"] =   {""},
    ["পাপুয়া নিউ গিনিতে"] =   {""},
    ["প্যারাগুয়েতে"] =   {""},
    ["বার্বাডোসে"] =   {""},
    ["পাকিস্তানে"] =   {""},
    ["পালাওতে"] =   {""},
    ["বাহামায়"] =   {""},
    ["বতসোয়ানায়"] =   {""},
    ["বাহরাইনে"] =   {""},
    ["ব্রাজিলে"] =   {""},
    ["পর্তুগালে"] =   {""},
    ["ব্রুনাইয়ে"] =   {""},
    ["বেলজিয়ামে"] =   {""},
    ["বুলগেরিয়ায়"] =   {""},
    ["বেলিজে"] =   {""},
    ["বাংলাদেশে"] =   {""},
    ["পানামায়"] =   {""},
    ["বেনিনে"] =   {""},
    ["ভুটানে"] =   {""},
    ["বুরকিনা ফাসোতে"] =   {""},
    ["মিয়ানমারে"] =   {""},
    ["বুরুন্ডিতে"] =   {""},
    ["বসনিয়া ও হার্জেগোভিনায়"] =   {""},
    ["পোল্যান্ডে"] =   {""},
    ["বলিভিয়ায়"] =   {""},
    ["পেরুতে"] =   {""},
    ["বেলারুশে"] =   {""},
    ["থাইল্যান্ডে"] =   {""},
    ["তাইওয়ানে"] =   {""},
    ["তুরস্কে"] =   {""},
    ["তুর্কমেনিস্তানে"] =   {""},
    ["ত্রিনিদাদ ও টোবাগোতে"] =   {""},
    ["চাদে"] =   {""},
    ["চেক প্রজাতন্ত্রে"] =   {""},
    ["চিলিতে"] =   {""},
    ["তাঞ্জানিয়ায়"] =   {""},
    ["টোঙ্গায়"] =   {""},
    ["টিউনিশিয়ায়"] =   {""},
    ["পূর্ব তিমুরে"] =   {""},
    ["গ্যাবনে"] =   {""},
    ["জ্যামাইকায়"] =   {""},
    ["মন্টেনেগ্রোতে"] =   {""},
    ["গ্রেনাডায়"] =   {""},
    ["গ্রিনল্যান্ডে"] =   {""},
    ["আলজেরিয়ায়"] =   {""},
    ["সলোমন দ্বীপপুঞ্জে"] =   {""},
    ["কমোরোসে"] =   {""},
    ["মার্শাল দ্বীপপুঞ্জে"] =   {""},
    ["মালদ্বীপে"] =   {""},
    ["দক্ষিণ আফ্রিকায়"] =   {""},
    ["দক্ষিণ সুদানে"] =   {""},
    ["গুয়াতেমালায়"] =   {""},
    ["জর্জিয়ায়"] =   {""},
    ["জিবুতিতে"] =   {""},
    ["ডেনমার্কে"] =   {""},
    ["ডোমিনিকায়"] =   {""},
    ["ডোমিনিকান প্রজাতন্ত্রে"] =   {""},
    ["কেপ ভার্দেতে"] =   {""},
    ["রুয়ান্ডায়"] =   {""},
    ["রাশিয়ায়"] =   {""},
    ["রোমানিয়ায়"] =   {""},
    ["জাম্বিয়ায়"] =   {""},
    ["জিম্বাবুয়েতে"] =   {""},
    ["আইভরি কোস্টে"] =   {""},
    ["সামোয়ায়"] =   {""},
    ["সেন্ট ভিনসেন্ট ও গ্রেনাডাইনসে"] =   {""},
    ["সেন্ট কিটস ও নেভিসে"] =   {""},
    ["সেন্ট লুসিয়ায়"] =   {""},
    ["সান মারিনোতে"] =   {""},
    ["সাও টোমে ও প্রিন্সিপিতে"] =   {""},
    ["শ্রীলঙ্কায়"] =   {""},
    ["সৌদি আরবে"] =   {""},
    ["এল সালভাদরে"] =   {""},
    ["স্লোভাকিয়ায়"] =   {""},
    ["স্লোভেনিয়ায়"] =   {""},
    ["সিঙ্গাপুরে"] =   {""},
    ["সেনেগালে"] =   {""},
    ["ইসওয়াতিনিতে"] =   {""},
    ["সুদানে"] =   {""},
    ["সিরিয়ায়"] =   {""},
    ["সুরিনামে"] =   {""},
    ["সুইডেনে"] =   {""},
    ["সুইজারল্যান্ডে"] =   {""},
    ["সিয়েরা লিওনে"] =   {""},
    ["সেশেলসে"] =   {""},
    ["সার্বিয়ায়"] =   {""},
    ["সোমালিয়ায়"] =   {""},
    ["চীনে"] =   {""},
    ["তাজিকিস্তানে"] =   {""},
    ["ইরাকে"] =   {""},
    ["ওমানে"] =   {""},
    ["গাম্বিয়ায়"] =   {""},
    ["ঘানায়"] =   {""},
    ["গিয়ানায়"] =   {""},
    ["গিনিতে"] =   {""},
    ["ইকুয়েটোরিয়াল গিনিতে"] =   {""},
    ["গিনি বিসাউতে"] =   {""},
    ["ভ্যাটিকান সিটিতে"] =   {""},
    ["ভানুয়াতুতে"] =   {""},
    ["ফ্রান্সে"] =   {""},
    ["ফিলিপাইনে"] =   {""},
    ["প্যালেস্টাইনে"] =   {""},
    ["ভেনিজুয়েলায়"] =   {""},
    ["ফিনল্যান্ডে"] =   {""},
    ["ভিয়েতনামে"] =   {""},
    ["ফিজিতে"] =   {""},
    ["সাইপ্রাসে"] =   {""},
    ["কিরগিজস্তানে"] =   {""},
    ["কাতারে"] =   {""},
    ["কাজাখস্তানে"] =   {""},
    ["কসোভোতে"] =   {""},
    ["ক্যামেরুনে"] =   {""},
    ["ক্রোয়েশিয়ায়"] =   {""},
    ["কম্বোডিয়ায়"] =   {""},
    ["কানাডায়"] =   {""},
    ["কিউবায়"] =   {""},
    ["উত্তর কোরিয়ায়"] =   {""},
    ["দক্ষিণ কোরিয়ায়"] =   {""},
    ["কোস্টারিকায়"] =   {""},
    ["কলোম্বিয়ায়"] =   {""},
    ["কঙ্গো প্রজাতন্ত্রে"] =   {""},
    ["গণতান্ত্রিক কঙ্গো প্রজাতন্ত্রে"] =   {""},
    ["কুয়েতে"] =   {""},
    ["কিরিবাতিতে"] =   {""},
    ["কেনিয়ায়"] =   {""},
    ["লাটভিয়ায়"] =   {""},
    ["লাওসে"] =   {""},
    ["লেবাননে"] =   {""},
    ["লুক্সেমবার্গে"] =   {""},
    ["লাইবেরিয়ায়"] =   {""},
    ["লেসোথোতে"] =   {""},
    ["লিথুয়ানিয়ায়"] =   {""},
    ["লিচেনস্টেইনে"] =   {""},
    ["লিবিয়ায়"] =   {""},
    ["মাদাগাস্কারে"] =   {""},
    ["মালাউইতে"] =   {""},
    ["মালয়েশিয়ায়"] =   {""},
    ["মালিতে"] =   {""},
    ["মেক্সিকোতে"] =   {""},
    ["মিসরে"] =   {""},
    ["মোনাকোতে"] =   {""},
    ["মঙ্গোলিয়ায়"] =   {""},
    ["মরক্কোতে"] =   {""},
    ["মোলদোভায়"] =   {""},
    ["মাল্টায়"] =   {""},
    ["মোজাম্বিকে"] =   {""},
    ["মরিশাসে"] =   {""},
    ["মরিটানিয়ায়"] =   {""},
    ["মেসিডোনিয়ায়"] =   {""},
    ["মাইক্রোনেশিয়ায়"] =   {""},
    ["নামিবিয়ায়"] =   {""},
    ["নাউরুতে"] =   {""},
    ["নেপালে"] =   {""},
    ["নিকারাগুয়ায়"] =   {""},
    ["নিউজিল্যান্ডে"] =   {""},
    ["নাইজারে"] =   {""},
    ["নাইজেরিয়ায়"] =   {""},
    ["নরওয়েতে"] =   {""},
    ["নেদারল্যান্ডসে"] =   {""},
    ["নিউয়ে"] =   {""},
    ["হাইতিতে"] =   {""},
    ["হাঙ্গেরিতে"] =   {""},
    ["ভারতে"] =   {""},
    ["ভিয়েতনামে"] =   {""},
}



local function li(text)
	local li = mw.html.create("li")
	li
		:wikitext(text)
		:done()
	return tostring(li)
end

local function linktarget(x, y)
	if y ~= nil and y == "" then
		return x
	else
		return y
	end
end

local function links(args1, args2, argsprefix, argssuffix, sorter, redlinks, override)
	local list = {}
	local prefix = (args2 or argsprefix or "") .. " "
	local suffix = args1 or argssuffix or ""
	for x, y in pairs(sorter) do
		local target = nil
		if redlinks then
			if override[y] then
				target = override[y]
			elseif y == "Georgia" or y == "Palestine" then
				if mw.title.new(prefix..country[y][1].. " " ..suffix).exists then
					target = prefix..country[y][1].. " " ..suffix
				else
					target = prefix..y.. " " ..suffix
				end
			else
				target = prefix..linktarget(y, country[y][1]).. " " ..suffix
			end
		else -- noredlinks
			if override[y] then
				if mw.title.new(override[y]).exists then
					target = override[y]
				end
			elseif mw.title.new(prefix..linktarget(y, country[y][1]).. " " ..suffix).exists then
				target = prefix..linktarget(y, country[y][1]).. " " ..suffix
			elseif y == "Georgia" or y == "Palestine" then
				if mw.title.new(prefix..y.. " " ..suffix).exists then
					target = prefix..y.. " " ..suffix
				end
			end
		end
		if target then
			table.insert(list, li("[["..target.."|"..y.."]]" ) )
		end
	end
	return list
end

function p.main(frame)
	local pframe = frame:getParent()
	local config = frame.args
	local args = pframe.args
	
	return p._main(args)
end

function p._main(args)
	local state, titlemid, title, group1
	if mw.title.getCurrentTitle() == "Template:বিশ্ব প্রসঙ্গ" then
		state = "autocollapse"
	else
		state = args.state
	end
	if args[1] ~= nil or args.prefix ~= nil and (args[2] == nil or args.suffix == nil) then
		titlemid = ""
	end
	if args.title ~= nil then
		title = args.title
	else
		title = "[["..(args[1] or args.prefix or "")..(titlemid or "").." বিশ্ব"..(args.suffix or "").."]]"
	end
	if args.group1 ~= nil and args.group1 ~= "" then
		group1 = args.group1
	end
	local sorter = {}
	for n in pairs(country) do
		table.insert(sorter, n)
	end
	table.sort(sorter)

	-- parse link overrides, e.g. |link_United_States=Foo sets override["United States"] = "Foo"
	local override = {}
	for k,v in pairs(args) do
		local country = mw.ustring.match(k, "^link_(.*)")
		if country then
			country = mw.ustring.gsub(country, "_", " ")
			override[country] = v
		end
	end
	
	local redlinks = args.noredlinks == nil
	local list1 = table.concat(links(args[1], args[2], args.prefix, args.suffix, sorter, redlinks, override) )
	local navarguments = {
		name = args.name or "বিশ্ব প্রসঙ্গ",
		state = state,
		navbar = args.navbar or "Tnavbar",
		border = args.border,
		title = title,
		image = args.image,
		titlestyle = args.titlestyle,
		bodystyle = args.bodystyle,
		abovestyle = args.abovestyle,
		belowstyle = args.belowstyle,
		groupstyle = args.groupstyle,
		liststyle = args.liststyle,
		listclass  = "hlist",
		above = args.above,
		group1 = group1,
		list1 = list1
	}
	return Navbox._navbox(navarguments)
end

return p