پودمان:Main: تفاوت میان نسخه‌ها

از ایران پدیا
پرش به ناوبری پرش به جستجو
جز (۱ نسخه واردشده)
جز (۱ نسخه واردشده)
 
(یک نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد)
(بدون تفاوت)

نسخهٔ کنونی تا ‏۲۷ دسامبر ۲۰۱۷، ساعت ۰۸:۲۲

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

--[[
-- This module produces a link to a main article or articles. It implements the
-- template {{main}}.
-- 
-- If the module is used in category or category talk space, it produces "The
-- main article for this category is xxx". Otherwise, it produces
-- "Main article: xxx".
--]]

local mHatnote = require('Module:Hatnote')
local mTableTools -- lazily initialise
local mArguments -- lazily initialise

local p = {}

function p.main(frame)
	mTableTools = require('Module:TableTools')
	mArguments = require('Module:Arguments')
	local args = mArguments.getArgs(frame, {parentOnly = true})
	local pages = {}
	for k, v in pairs(args) do
		if type(k) == 'number' then
			local display = args['l' .. tostring(k)]
			local page = {v, display}
			pages[k] = page
		end
	end
	pages = mTableTools.compressSparseArray(pages)
	local options = {
		selfref = args.selfref
	}
	return p._main(options, unpack(pages))
end

function p._main(options, ...)
	-- Get the list of pages. If no first page was specified we use the current
	-- page name.
	local pages = {...}
	local currentTitle = mw.title.getCurrentTitle()
	local firstPageTable = pages[1]
	local firstPage
	if firstPageTable then
		firstPage = firstPageTable[1]
	else
		firstPage = currentTitle.text
		firstPageTable = {firstPage}
		pages[1] = firstPageTable
	end

	-- Find the pagetype.
	local firstPageNs = mHatnote.findNamespaceId(firstPage)
	local pagetype = firstPageNs == 0 and 'نوشتار' or 'صفحه'

	-- Make the formatted link text
	local links = mHatnote.formatPageTables(unpack(pages))
	links = mw.text.listToText(links)

	-- Build the text.
	local isPlural = #pages > 1
	local currentNs = currentTitle.namespace
	local isCategoryNamespace = currentNs - currentNs % 2 == 14
	local stringToFormat
	if isCategoryNamespace then
		if isPlural then
			stringToFormat = '%s‌های اصلی این'
				.. ' [[ایران‌پدیا:رده‌بندی|رده]] %s هستند'
		else
			stringToFormat = '%s اصلی این'
				.. ' [[ایران‌پدیا:رده‌بندی|رده]] %s است'
		end
	else
		if isPlural then
			stringToFormat = '%s‌های اصلی: %s'
		else
			stringToFormat = '%s اصلی: %s'
		end
	end
	local text = string.format(stringToFormat, pagetype, links)

	-- Process the options and pass the text to the _rellink function in
	-- [[Module:Hatnote]].
	options = options or {}
	local hnOptions = {
		extraclasses = 'relarticle mainarticle',
		selfref = options.selfref
	}
	return mHatnote._hatnote(text, hnOptions)
end

return p