پودمان:Cat main

    از ویکی‌نور
    (تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)

    توضیحات این پودمان می‌تواند در پودمان:Cat main/توضیحات قرار گیرد.

    -- This module implements {{cat main}}.
    
    local mHatnote = require('Module:Hatnote')
    local yesno = require('Module:Yesno')
    local mTableTools -- lazily initialise
    local mArguments -- lazily initialise
    
    local p = {}
    
    function p.catMain(frame)
    	mTableTools = require('Module:TableTools')
    	mArguments = require('Module:Arguments')
    	local args = mArguments.getArgs(frame, {wrappers = 'الگو:اصلی رده'})
    	local pages = mTableTools.compressSparseArray(args)
    	local options = {
    		article = args.article,
    		selfref = args.selfref
    	}
    	return p._catMain(options, unpack(pages))
    end
    
    function p._catMain(options, ...)
    	options = options or {}
    
    	-- Get the links table.
    	local links = mHatnote.formatPages(...)
    	if not links[1] then
    		local page = mw.title.getCurrentTitle().text
    		links[1] = mHatnote._formatLink(page)
    	end
    	for i, link in ipairs(links) do
    		links[i] = string.format("'''%s'''", link)
    	end
    
    	-- Get the pagetype.
    	local pagetype
    	if yesno(options.article) ~= false then
    		pagetype = 'مقاله'
    	else
    		pagetype = 'صفحه'
    	end
    
    	-- Work out whether we need to be singular or plural.
    	local stringToFormat
    	if #links > 1 then
    		stringToFormat = '%s‌های اصلی این [[راهنما:رده|رده]] %s هستند.'
    	else
    		stringToFormat = '%sٔ اصلی این [[راهنما:رده|رده]]  %s است.'
    	end
    
    	-- Get the text.
    	local text = string.format(
    		stringToFormat,
    		pagetype,
    		mw.text.listToText(links)
    	)
    	
    	-- Pass it through to Module:Hatnote.
    	local hnOptions = {}
    	hnOptions.selfref = options.selfref
    	hnOptions.extraclasses = 'relarticle mainarticle'
    
    	return mHatnote._hatnote(text, hnOptions)
    end
    
    return p