local navbar = require('Module:Navbar')._navbar local mm = require('Module:Math') local bn_module = require('মডিউল:ConvertDigit')._main local function bn(value)     return bn_module(tostring(value)) end	 local _en = require('মডিউল:ConvertDigitRevert').bn_to_en local function en(value) return _en(tostring(value)) end local p = {}  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*$') 	end 	return text end local function progressBar(current, total) 	local percentDone = mm._round(current / total * 100, 1) 	local leftBar = 	local rightBar =  	if percentDone >= 100 then 		leftBar = 100 		rightBar = 0 	else 		leftBar = current / total * 100 		rightBar = (100-current) / total * 100 	end 	if percentDone >= 100 then 		percentDone = 100 	end 	local progBarText = '' .. 			'' .. bn(percentDone) .. '% সম্পন্ন' .. 			'' .. 			' ' .. 			' ' .. 			'' 	 	return progBarText end local levelNames = { 	'প্রজ্ঞাবান সম্পাদক', 	'চূড়ান্ত অগ্রণী সম্পাদক', 	'উর্ধ্বতন অগ্রণী সম্পাদক', 	'অগ্রণী সম্পাদক', 	'মহাজ্ঞানী ২য় পর্যায় সম্পাদক', 	'[[উইকিপিডিয়া:কর্ম পদক#মহাজ্ঞানী সম্পাদক (বা গ্রান্ড উচ্চ টোগনাম ভিকারাস)', 	'জ্ঞানী সম্পাদক চতুর্থ', 	'জ্ঞানী সম্পাদক তৃতীয়', 	'দ্বিতীয় পর্যায়ের জ্ঞানী সম্পাদক', 	'জ্ঞানী সম্পাদক', 	'তৃতীয় পর্যায়ের জ্যেষ্ঠ সম্পাদক', 	'দ্বিতীয় পর্যায়ের জ্যেষ্ঠ সম্পাদক', 	'জ্যেষ্ঠ সম্পাদক', 	'চতুর্থ পর্যায়ের প্রবীণ সম্পাদক', 	'তৃতীয় পর্যায়ের প্রবীণ সম্পাদক', 	'দ্বিতীয় পর্যায়ের প্রবীণ সম্পাদক', 	'প্রবীণ সম্পাদক', 	'অভিজ্ঞ সম্পাদক', 	'প্রশিক্ষিত সম্পাদক', 	'প্রশিক্ষণরত সম্পাদক', 	'শিক্ষানবিশ সম্পাদক', 	'নবীন সম্পাদক', 	'নিবন্ধিত সম্পাদক', 	'উইকিপিডিয়ান' } local levelTime = { 	8035.5, 7305, 6574.5, 5844, 5113.5, 4383, 3652.4, 2922, 2556.7, 2191.5, 1826.2, 1643.6,  	1461, 1278.4, 1095.7, 913.1, 730.5, 547.9, 365.25, 182.6, 91.3, 30.5, 1, 0, } local levelEdits = { 	205000, 175000, 150000, 132000, 114000, 96000, 78000, 60000, 51000, 42000, 33000, 28500, 	24000, 20000, 16000, 12000, 8000, 6000, 4000, 2000, 1000, 200, 1, 0, } function p.serviceLevel(args) 	--Inputs 	local editorTime = tonumber(stripToNil(args.editorTime)) 	local edits = tonumber(stripToNil(en(args.edits))) 	local styleoverride = stripToNil(args.styleoverride) 	local genderoverride = stripToNil(args.genderoverride) 	local url = stripToNil(args.url) 	 	-- Other Variables 	local timeLevel =  -- Level associated with time 	local editLevel =  -- Level associated with edits 	local userLevel =  -- Full name of current user level 	local lowEdits =  -- Minimum number of edits for current user level 	local lowTime =  -- Minimum amount of time for current user level 	local highEdits =  -- Max number of edits for current user level 	local highTime =  -- Max amount of time for current user level 	local nextLevel =  -- Full name of next user level 	local fullMessage = '= levelTime[x] then 			timeLevel = x 			break 		end 	end 	-- Fine "level" of editor based on edits 	for y = 1, 24, 1 do 		if edits >= levelEdits[y] then 			editLevel = y 			break 		end 	end 	 	-- Set user level and the next level up 	if timeLevel == editLevel then 		if timeLevel == 1 then 			userLevel = levelNames[1] 			topLevel = true 		else 			userLevel = levelNames[editLevel] 			nextLevel = levelNames[editLevel-1] 			lowEdits = levelEdits[editLevel] 			highEdits = levelEdits[editLevel-1] 			lowTime = levelTime[editLevel] 			highTime = levelTime[editLevel-1] 			needsBoth = true 		end 	elseif timeLevel < editLevel then 		userLevel = levelNames[editLevel] 		nextLevel = levelNames[editLevel-1] 		lowEdits = levelEdits[editLevel] 		highEdits = levelEdits[editLevel-1] 		lowTime = levelTime[editLevel] 		highTime = levelTime[editLevel-1] 		needsEdits = true 	else 		userLevel = levelNames[timeLevel] 		nextLevel = levelNames[timeLevel-1] 		lowEdits = levelEdits[timeLevel] 		highEdits = levelEdits[timeLevel-1] 		lowTime = levelTime[timeLevel] 		highTime = levelTime[timeLevel-1] 		needsTime = true 	end 	 	-- Build notice 	-- First paragraph 	fullMessage = fullMessage .. styleoverride .. '">' .. 					navbar({"টেমপ্লেট:কর্ম পদকের অগ্রগতি",style="float:right",mini=1}) .. 					'বর্তমানে, এই সম্পাদক ' .. userLevel .. ' কর্ম পদক অর্জন করেছেন।' 	if topLevel then 		fullMessage = fullMessage .. 'এটি একজন সম্পাদকের দ্বারা অর্জনযোগ্য সর্বোচ্চ স্তর!' 	else 		local fullMessagel 		if needsBoth then 			fullMessagel =  'সম্পাদনা এবং সময়ের' 		elseif needsEdits then 			fullMessagel =  'সম্পাদনার' 		else 			fullMessagel =  'সময়ের' 		end	 		fullMessage = fullMessage .. ' পরবর্তী স্তর, ' .. nextLevel .. ', এ যেতে তাকে '..fullMessagel..' শর্ত পূরণ করতে হবে। '  		 	 		-- Second paragra / progress bars 		if displayall or needsBoth or needsEdits then 			fullMessage = fullMessage .. 'পরবর্তী স্তরে যেতে অগ্রগতি (সম্পাদনা অনুযায়ী): [ ' .. 							'[' .. url .. ' ' .. 							bn((edits - lowEdits) .. '] / ' .. 							(highEdits - lowEdits)) .. ' ]' 			fullMessage = fullMessage .. progressBar(edits - lowEdits, highEdits - lowEdits) 		end 		if displayall or needsBoth or needsTime then 			fullMessage = fullMessage .. 'পরবর্তী স্তরে যেতে অগ্রগতি (সময় অনুযায়ী): [ ' .. 							bn((editorTime - lowTime) .. ' দিন / ' .. 							(highTime - lowTime)) .. ' দিন ]' 			fullMessage = fullMessage .. progressBar(editorTime - lowTime, highTime - lowTime) 		end 		fullMessage = fullMessage .. '' 	end 	return fullMessage end  function p.main(frame) 	return p.serviceLevel(frame.args) end  return p