বিষয়বস্তুতে চলুন

মডিউল:বিষয়শ্রেণী পরিচালনাকারী/শেয়ারকৃত

বইপিডিয়া থেকে

এই মডিউলের জন্য মডিউল:বিষয়শ্রেণী পরিচালনাকারী/শেয়ারকৃত/নথি-এ নথিপত্র তৈরি করা হয়ে থাকতে পারে

-- এই মডিউলটিতে [[মডিউল:বিষয়শ্রেণী পরিচালনাকারী]] এবং এর উপ-মডিউলগুলোর জন্য শেয়ারকৃত ফাংশন রয়েছে।
-- এতে 'নামস্থান শনাক্তকরণ' (Namespace detect) এর উপাত্তগুলোও সরাসরি অন্তর্ভুক্ত করা হয়েছে।

local p = {}

local function getMappings()
    local cfg = {}
    cfg.demopage = 'page' -- আপনার প্রয়োজন অনুযায়ী পরিবর্তন করতে পারেন

    local function addKey(t, key, defaultKey)
        if key ~= defaultKey then
            t[#t + 1] = key
        end
    end

    local defaultKeys = {'main', 'talk', 'other', 'subjectns', 'demospace', 'demopage'}
    local argKeys = {}
    for i, defaultKey in ipairs(defaultKeys) do
        argKeys[defaultKey] = {defaultKey}
    end

    for defaultKey, t in pairs(argKeys) do
        local cfgValue = cfg[defaultKey]
        local cfgValueType = type(cfgValue)
        if cfgValueType == 'string' then
            addKey(t, cfgValue, defaultKey)
        elseif cfgValueType == 'table' then
            for i, key in ipairs(cfgValue) do
                addKey(t, key, defaultKey)
            end
        end
    end

    local mappings = {}
    local mainNsName = mw.site.subjectNamespaces[0].name
    mainNsName = mw.ustring.lower(mainNsName)
    mappings[mainNsName] = mw.clone(argKeys.main)
    mappings['talk'] = mw.clone(argKeys.talk)
    
    for nsid, ns in pairs(mw.site.subjectNamespaces) do
        if nsid ~= 0 then 
            local nsname = mw.ustring.lower(ns.name)
            local canonicalName = mw.ustring.lower(ns.canonicalName)
            mappings[nsname] = {nsname}
            if canonicalName ~= nsname then
                table.insert(mappings[nsname], canonicalName)
            end
            for _, alias in ipairs(ns.aliases) do
                table.insert(mappings[nsname], mw.ustring.lower(alias))
            end
        end
    end
    return mappings
end

function p.matchesBlacklist(page, blacklist)
	for i, pattern in ipairs(blacklist) do
		local match = mw.ustring.match(page, pattern)
		if match then
			return true
		end
	end
	return false
end

-- প্যারামিটার ম্যাপিং রিটার্ন করার ফাংশন (এখন এটি সরাসরি ইন্টারনাল ফাংশন ব্যবহার করে)
function p.getParamMappings(useLoadData)
    -- যেহেতু ডাটা এখন ইন-লাইন, তাই useLoadData এখানে আর মডিউল কল করবে না
    return getMappings()
end

-- নামস্থান প্যারামিটার পাওয়ার ফাংশন
function p.getNamespaceParameters(titleObj, mappings)
	local mappingsKey
	if titleObj.isTalkPage then
		mappingsKey = 'talk'
	else
		mappingsKey = mw.site.namespaces[titleObj.namespace].name
	end
	mappingsKey = mw.ustring.lower(mappingsKey)
	return mappings[mappingsKey] or {}
end

return p