Module:নিবন্ধ ইতিহাস
Appearance
নিবন্ধ ইতিহাস অজানাবিষয়ক ভালো নিবন্ধের মানদণ্ড অনুসারে একটি ভালো নিবন্ধ হিসেবে চিহ্নিত। আপনি যদি নিবন্ধটির আরো উন্নয়ন করতে সমর্থ হন, তবে অনুগ্রহপূর্বক তা করুন। আপনি যদি মনে করেন যে নিবন্ধটিতে মানদণ্ড অনুসৃত হয়নি তাহলে এটির পুনঃপর্যালোচনা আহবান করতে পারেন। | ||
তারিখ | মাইলফলক | ফলাফল |
---|---|---|
January 29, 2023 | প্রস্তাবিত ভালো নিবন্ধ | Passed |
এই নিবন্ধ থেকে একটি তথ্য উইকিপিডিয়ার প্রধান পাতার আপনি জানেন কি? January 31, 2024 তারিখে প্রদর্শিত হয়েছে। |
-- এই মডিউলটি {{নিবন্ধ ইতিহাস}} টেমপ্লেটের জন্য তৈরি করা হয়েছে।
-- এটি নিবন্ধের ইতিহাস প্রদর্শনের জন্য ব্যবহৃত হবে যেখানে নিবন্ধের প্রতিটি পরিবর্তনের তারিখ,
-- প্রক্রিয়া এবং ফলাফল প্রদর্শন করা হবে।
local Date = require("Module:Date")._Date -- তারিখের জন্য
local data = require("Module:নিবন্ধ ইতিহাস/উপাত্ত") -- মডিউলের প্রয়োজনীয় উপাত্ত
local p = {}
local LABEL = data.label
local MESSAGE = data.message
local RESULT = data.result
local function date(txt)
-- এই ফাংশনটি একটি তারিখ স্ট্রিং গ্রহণ করে এবং তারিখটি সাজানো ভাবে প্রদর্শন করে।
local dt = Date(txt)
if(dt) then -- যদি তারিখ সঠিক হয়
dt = dt:text("mdy") -- তারিখ সাজানো
else -- যদি তারিখ ভুল হয়
dt = "<font class='error'>ভুলভাবে বিন্যস্ত তারিখ</font>"
end
-- তারিখ প্রদর্শন
return dt
end
function p.showCurrentStatus(title, topic, currentstatus)
-- বর্তমান অবস্থা প্রদর্শন
local topic = data.topic[topic]
if topic == nil then
topic = "অজানা"
end
local image = data.image[currentstatus]
local message = string.format(MESSAGE[currentstatus], title, title, topic, topic)
return '\n|-\n|[[file:'..image..'|30px]]|| align="center" colspan="2" |' .. message
end
function p.showMilestones(actions)
local result = '\n|-\n!তারিখ!!মাইলফলক!!ফলাফল\n|-\n'
mw.logObject(actions)
for seq, action in pairs(actions) do
local actionLabel = LABEL[action[""]]
local resultLabel = RESULT[action["result"]]
if(action["date"] == nil) then
action["date"] = ""
end
if(action["link"] == nil) then
action["link"] = actionLabel
else
action["link"] = '[['..action["link"]..'|'..actionLabel..']]'
end
if actionLabel == nil then
actionLabel = action[""]
end
if resultLabel == nil then
resultLabel = action["result"]
end
if(action["date"] ~= "") then
local dt = date(action["date"])
local oldid = tonumber(action["oldid"])
if(oldid ~= nil) then
dt = "[[বিশেষ:পার্থক্য/"..oldid.."|"..dt.."]]"
end
result = result .. '|' .. dt .. '||' .. action["link"] .. '||' .. resultLabel .. '\n|-\n'
end
end
return result
end
function p.showDYK(dyks, count)
-- first dyk
local firstDyk = dyks[1]
if(firstDyk["date"] == nil) then
return ""
end
local result = date(firstDyk["date"])
if(count > 1) then
-- multiple dyks
for i = 2, count - 1 do
local dyk = dyks[i]
if(dyk["date"] ~= nil) then
result = result .. ", " .. date(dyk["date"])
end
end
-- last dyk
local lastDyk = dyks[count]
result = result .. " ও " .. date(lastDyk["date"])
end
result = "|[[file:"..data.image["dyk"].."|30px]]||"..string.format(MESSAGE["dyk"],result).."\n|-\n"
return result
end
function p.show(config)
-- MESSAGE is a table that contains the messages that will be displayed
-- based on the current status of the article
-- if the current status is not found in the table, then the function will return as if the article is not in any status
if(MESSAGE[config["currentstatus"]] == nil) then
config["currentstatus"] = "unknown" -- Unknown status
end
local content = '{| align="center" style="text-align:center;" class="tmbox tmbox-notice'
local isSmall = config["small"] or config["actioncount"] > 1
if(isSmall) then
content = content.. ' tmbox-small'
end
content = content .. '"'
--- বর্তমান অবস্থা প্রদর্শন
content = content .. p.showCurrentStatus(config["title"], config["topic"], config["currentstatus"])
-- মাইলফলক প্রদর্শন
if (config["actioncount"] > 0) then
content = content .. p.showMilestones(config["action"])
end
if (config["dykcount"] > 0) then
content = content .. p.showDYK(config["dyk"], config["dykcount"])
end
-- মাইলফলক শেষ; এখন আজাকি প্রদর্শন
content = content .. "|}"
return content
end
function parseArguments(arguments)
local PARAMETER_PATTERN = "(%a+)(%d+)(%a*)" -- pattern to match the parameter name
local parsedConfig = {
-- title of the article
["title"] = mw.title.getCurrentTitle()["text"],
-- topic of the article
["topic"] = arguments["topic"],
-- current status of the article
["currentstatus"] = arguments["currentstatus"],
["actioncount"] = 0,
["dykcount"] = 0,
["action"] = {},
["dyk"] = {}
}
for parameter, value in pairs(arguments) do
-- Parse parameters like action1, action1date, action1result, action1oldid, action1link
value = mw.text.trim(value)
parameter = mw.text.trim(parameter)
parameter = mw.ustring.lower(parameter)
local partBeforeNumber, number, partAfterNumber = string.match(parameter, PARAMETER_PATTERN)
if(partBeforeNumber) then
-- covers the action and dyk parameters
partAfterNumber = tostring(partAfterNumber)
number = tonumber(number)
-- strip the value
if(number ~= nil) then
-- Not a scaler because it has a sequence number
if (parsedConfig[partBeforeNumber] == nil) then
parsedConfig[partBeforeNumber] = {}
end
if (parsedConfig[partBeforeNumber][number] == nil) then
parsedConfig[partBeforeNumber][number] = {}
end
parsedConfig[partBeforeNumber][number][partAfterNumber] = value
countLabel = partBeforeNumber.."count"
-- Increase the count of that particular action
parsedConfig[countLabel] = parsedConfig[countLabel] + 1
else
-- Scaler
parsedConfig[partBeforeNumber] = value
end
else
-- covers the rest of the parameters
-- like topic, currentstatus, small
parsedConfig[parameter] = value
end
end
-- log the parsed config
mw.logObject(parsedConfig)
return parsedConfig
end
function p.main(frame)
local arguments = frame:getParent().args
local parsedConfig = parseArguments(arguments)
return p.show(parsedConfig)
end
return p