ব্যবহার সম্পাদনা

{{#invoke:রাজনৈতিক দল|fetch|<দল>|<মান>}}

প্যারামিটার সম্পাদনা

প্যারামিটার বিবরণ
1 রাজনৈতিক দলের নাম। যদি দলের নাম না থাকে, তবে তা যোগ করতে আলাপ পাতায় অনুরোধ করুন।
error ঐচ্ছিক, এই প্যারামিটারটি প্রদত্ত |error= মানটি ফলাফল হিসেবে দিবে যদি মডিউলে অনুরোধকৃত দলের নাম বা রং না থাকে।

মডিউলটি হালনাগাদ করা সম্পাদনা

রাজনৈতিক দলগুলির নামের প্রথম অক্ষরের উপর ভিত্তি করে বর্ণানুক্রমে এই মডিউলটি ভাগ করা হয়েছে (উদাহরণ, "বাংলাদেশ আওয়ামী লীগ"-এর ভুক্তি /ব-এর অধীনে পাওয়া যাবে)।

প্রতিটি উপাত্ত উপমডিউলে দুটি স্থানীয় গ্রুপ রয়েছে: local alternatelocal full। বিকল্প (alternate) গ্রুপটি একটি দলের বিকল্প নামগুলির জন্য। বাংলাদেশ আওয়ামী লীগ ব্যবহার করে নিচে উদাহরণ দেওয়া হল:

local alternate = {
    ....
	["আওয়ামী লীগ"] = "বাংলাদেশ আওয়ামী লীগ",
	["নিখিল পাকিস্তান আওয়ামী লীগ"] = "বাংলাদেশ আওয়ামী লীগ",
    ...
}

বর্গাকার বন্ধনীর মধ্যে থাকা প্রথম ভুক্তিটি হল বিকল্প নাম, এবং উদ্ধৃতি চিহ্নের মধ্যে থাকা দ্বিতীয় ভুক্তিটি হল full গ্রুপে পাওয়া নাম। লক্ষ্য করুন যে, কোনও দলের বিকল্প নামটি তার সংশ্লিষ্ট অক্ষর-ভিত্তিক উপপাতায় সংরক্ষণ করা উচিত; "বাংলাদেশ আওয়ামী লীগ" /ব-এর অধীনে থাকলেও এর বিকল্প নাম "নিখিল পাকিস্তান আওয়ামী লীগ" /ন-এর অধীনে রয়েছে।

ছকের মান সম্পাদনা

local full = {
    ....
	["বাংলাদেশ আওয়ামী লীগ"] = {abbrev = "লীগ", color = "#006a4e", shortname = "আওয়ামী লীগ",},
    ...
}

প্রতিটি দলের জন্য তিনটি মান সংরক্ষণ করা হয়:

  • সংক্ষেপন (abbrev)।
  • দলের রং (color)।
  • দলের জন্য একটি সংক্ষিপ্ত নাম (shortname)।

যদি কোনও দলের জন্য একটি নামের মান সংরক্ষণ না করা হয়, তবে মডিউলটি ইনপুট প্রদানের আগে অন্য "সংক্ষিপ্ত" নামটি ইনপুট হিসেবে দেওয়ার চেষ্টা করবে। সুতরাং যদি abbrev দেওয়া হয় ও shortname না দেওয়া হয়, তবে যে মানটি জিজ্ঞাসা করা হোক না কেন এটি সর্বদা abbrev মানটি ফলাফল হিসেবে প্রদান করবে।

একটি যোগ করতে বা পরিবর্তন করতে সম্পাদনা

যথাযথ উপাত্ত পাতায় যোগ করুন বা আলাপ পাতায় জানান। নিচের লাইনটি অনুলিপি করুন ও যথাযথ ঘরগুলি পূরণ করুন। ন্যূনতম তথ্য হিসেবে একটি দলের নাম প্রয়োজন। প্রতিটি মান সম্পর্কে তথ্যের জন্য উপরে দেখুন।

  • ["party"] = {abbrev = "", color = "", shortname = "",},

ত্রুটি বার্তা সম্পাদনা

মডিউলের ত্রুটি বার্তা ও ব্যাখ্যা
ত্রুটি বার্তা ব্যাখ্যা
লুয়া ত্রুটি: bad argument #1 to 'sub' (string expected, got table)। একটি ভুক্তি যা "local full" অংশে দেওয়া উচিত তা "local alternate" অংশে দেয়া হয়েছে। এটিকে "local full" অংশে সরান।
লুয়া ত্রুটি package.lua এর 80 নং লাইনে: module 'মডিউল:রাজনৈতিক দল/' not found। খালি মান সহকারে বিকল্প তালিকাতে দল যুক্ত করা হয়েছে।
মান টেমপ্লেটে নেই। অনুগ্রহ করে এটি যোগ করার জন্য অনুরোধ করুন। "local full" অংশে দলটির নাম আছে তবে উক্ত ভুক্তিতে কোনও রং নেই। ("local full" অংশে সদৃশ ভুক্তি থাকলেও এমন হতে পারে। যদি থাকে, একত্রীত করুন।)
(কোনও ত্রুটি বার্তা নেই, তবে দলের রং সাদা /ফাঁকা) নিচের মডিউল:রাজনৈতিক দল/ উপাত্ত পাতার প্রাসঙ্গিক মডিউলে "local full" অংশে দলের জন্য সেটির ভুক্তিতে একটি রং যোগ করুন।
প্যারামিটার ১ একটি দলের নাম হওয়া উচিত একটি টেমপ্লেট মডিউলে একটি অনুপস্থিত প্যারামিটার দেওয়ার চেষ্টা করছে।
প্যারামিটার ২ আউটপুট ধরন হওয়া উচিত

উপাত্ত পাতা সম্পাদনা

local p = {}

local default_color = '&#35;F8F9FA'

local categories = {
	party_not_in_list = '[[বিষয়শ্রেণী:অজানা দলসহ রাজনৈতিক দল ব্যবহার করা পাতা]]',
	shortname_not_in_list = '[[বিষয়শ্রেণী:অনুপস্থিত সংক্ষিপ্তনামসহ রাজনৈতিক দল ব্যবহার করা পাতা]]',
	color_not_in_list = '[[বিষয়শ্রেণী:অনুপস্থিত রংসহ রাজনৈতিক দল ব্যবহার করা পাতা]]',
}

local function create_error(error_message)
	return string.format('<strong class="error">%s</strong>', error_message)
end

local function getFirstLetter(party)
	local index = mw.ustring.sub(party, 1, 1)
	-- বাংলা নয় এমনগুলির জন্য সূচি
	if mw.ustring.match (index, '[^অ-হ]') then
		return '১'
	end
	return index
end

local function stripToNil(text)
	-- If text is a string, return its trimmed content, or nil if empty.
	-- Otherwise return text (which may, for example, be nil).
	if type(text) == 'string' then
		text = text:match('(%S.-)%s*$')
		local delink = require('Module:Delink')._delink
		text = delink({text, wikilinks = "target"})
	end
	return text
end

-- Example of having all the data - color and names - in one table. Requires one page to be edited instead of two when adding a new party.
function p._fetch(args)
	if not args[1] then
		return create_error("প্যারামিটার ১ একটি দলের নাম হওয়া উচিত।")
	end

	if not args[2] then
		return create_error("প্যারামিটার ২ আউটপুট ধরন হওয়া উচিত")
	end

 	local party = stripToNil(args[1])
	local out_type = stripToNil(args[2])
	if out_type == 'colour' then
		out_type = 'color'
	end
	local index = getFirstLetter(party)
	
	-- Load data from submodule
	local data = mw.loadData('মডিউল:রাজনৈতিক দল/' .. index)
	local data_all = data.full

	local party_alt = data.alternate[party]
	local party_info
	if party_alt then
		if data_all[party_alt] then
			party_info = data_all[party_alt]
		else
			index = getFirstLetter(party_alt)
			data = mw.loadData('মডিউল:রাজনৈতিক দল/' .. index)
			party_info = data.full[party_alt]
		end
	else
		party_info = data_all[party]
	end

	-- Check if database value exists
	-- * Not even in database - return given error or input
	-- * No color - return error
	-- * No shortname/abbrev - return first non-blank of abbrev->shortname->input
	if not party_info then
		if out_type == 'color' then
			return args.error or default_color
		else
			return args.error or party
		end
	end
	local return_value = party_info[out_type]
	if return_value == "" then
		if out_type == 'color' then
			return args.error or create_error("মান টেমপ্লেটে নেই। অনুগ্রহ করে এটি যোগ করার জন্য অনুরোধ করুন।")
		elseif out_type == 'abbrev' then
			if party_info.shortname ~= "" then
				return party_info.shortname
			else
				return party
			end
		elseif out_type == 'shortname' then
			if party_info.abbrev ~= "" then
				return party_info.abbrev 
			else
				return party
			end
		else
			return party
		end
	end

	if out_type == 'color' and string.find(return_value, '#') then
		return_value = string.gsub(return_value, '#', '&#35;')
	end
	return return_value	
end

function p.fetch(frame)
	-- Initialise and populate variables
	local getArgs = require("Module:Arguments").getArgs
	local args = getArgs(frame)
	
	return p._fetch(args)
end

return p