<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://source.islamical.org/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3AHeader%2Fattribution</id>
	<title>پودمان:Header/attribution - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://source.islamical.org/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3AHeader%2Fattribution"/>
	<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Header/attribution&amp;action=history"/>
	<updated>2026-11-10T00:10:37Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Header/attribution&amp;diff=120&amp;oldid=prev</id>
		<title>Mojtabakd: ایجاد پودمان</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Header/attribution&amp;diff=120&amp;oldid=prev"/>
		<updated>2026-11-04T00:42:48Z</updated>

		<summary type="html">&lt;p&gt;ایجاد پودمان&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local TableTools = require(&amp;#039;Module:TableTools&amp;#039;)&lt;br /&gt;
local contrib_types = require(&amp;#039;Module:Header/attribution data&amp;#039;)&lt;br /&gt;
local headerLang = require(&amp;#039;Module:Header/lang&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
p.attr_data = {}&lt;br /&gt;
for k, v in pairs(contrib_types) do&lt;br /&gt;
	p.attr_data[v[&amp;#039;param_name&amp;#039;]] = v&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_attribution_params(args)&lt;br /&gt;
	local all_contributors = {&lt;br /&gt;
		title = {},&lt;br /&gt;
		section = {}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local base_param_name = string.gsub(string.gsub(k, &amp;#039;%-display$&amp;#039;, &amp;#039;&amp;#039;), &amp;#039;%-nolink$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		local arg_param_name = string.gsub(base_param_name, &amp;#039;^override%-&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		local param_name = string.gsub(arg_param_name, &amp;#039;%d*$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		&lt;br /&gt;
		local section_key&lt;br /&gt;
		if string.match(arg_param_name, &amp;#039;^section%-&amp;#039;) then&lt;br /&gt;
			section_key = &amp;#039;section&amp;#039;&lt;br /&gt;
			param_name = string.gsub(param_name, &amp;#039;^section%-&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			section_key = &amp;#039;title&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if p[&amp;#039;attr_data&amp;#039;][param_name] then&lt;br /&gt;
			local param_name_pattern = &amp;#039;^&amp;#039; .. string.gsub(string.gsub(base_param_name, &amp;#039;%d*$&amp;#039;, &amp;#039;&amp;#039;), &amp;#039;%-&amp;#039;, &amp;#039;%%%-&amp;#039;)&lt;br /&gt;
			local nText = string.match(k, param_name_pattern .. &amp;#039;%d*$&amp;#039;)&lt;br /&gt;
			local nDisplay = string.match(k, param_name_pattern .. &amp;#039;%d*%-display$&amp;#039;)&lt;br /&gt;
			local nNoLink = string.match(k, param_name_pattern .. &amp;#039;%d*%-nolink$&amp;#039;)&lt;br /&gt;
			&lt;br /&gt;
			local n&lt;br /&gt;
			local info&lt;br /&gt;
			&lt;br /&gt;
			if nText then&lt;br /&gt;
				n = string.gsub(nText, param_name_pattern .. &amp;#039;(%d*)$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
				n = tonumber(n) or 1&lt;br /&gt;
				info = &amp;#039;text&amp;#039;&lt;br /&gt;
			elseif nDisplay then&lt;br /&gt;
				n = string.gsub(nDisplay, param_name_pattern .. &amp;#039;(%d*)%-display$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
				n = tonumber(n) or 1&lt;br /&gt;
				info = &amp;#039;display&amp;#039;&lt;br /&gt;
			elseif nNoLink then&lt;br /&gt;
				n = string.gsub(nNoLink, param_name_pattern .. &amp;#039;(%d*)%-nolink$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
				n = tonumber(n) or 1&lt;br /&gt;
				info = &amp;#039;nolink&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local index = p[&amp;#039;attr_data&amp;#039;][param_name][&amp;#039;index&amp;#039;]&lt;br /&gt;
			all_contributors[section_key][index] = all_contributors[section_key][index] or {}&lt;br /&gt;
			all_contributors[section_key][index][&amp;#039;param_name&amp;#039;] = all_contributors[section_key][index][&amp;#039;param_name&amp;#039;] or param_name&lt;br /&gt;
			all_contributors[section_key][index][&amp;#039;arg_param_name&amp;#039;] = all_contributors[section_key][index][&amp;#039;arg_param_name&amp;#039;] or arg_param_name&lt;br /&gt;
			all_contributors[section_key][index][&amp;#039;override&amp;#039;] = all_contributors[section_key][index][&amp;#039;override&amp;#039;] or args[&amp;#039;override-&amp;#039; .. arg_param_name]&lt;br /&gt;
			&lt;br /&gt;
			if n and not (args.is_translation and arg_param_name == &amp;#039;translator&amp;#039; and info == &amp;#039;text&amp;#039; and string.lower(v) == &amp;#039;wikisource&amp;#039;) then&lt;br /&gt;
				all_contributors[section_key][index][&amp;#039;values&amp;#039;] = all_contributors[section_key][index][&amp;#039;values&amp;#039;] or {}&lt;br /&gt;
				all_contributors[section_key][index][&amp;#039;values&amp;#039;][n] = all_contributors[section_key][index][&amp;#039;values&amp;#039;][n] or {}&lt;br /&gt;
				all_contributors[section_key][index][&amp;#039;values&amp;#039;][n][info] = all_contributors[section_key][index][&amp;#039;values&amp;#039;][n][info] or v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.is_translation then&lt;br /&gt;
		local index = p[&amp;#039;attr_data&amp;#039;][&amp;#039;translator&amp;#039;][&amp;#039;index&amp;#039;]&lt;br /&gt;
		all_contributors[&amp;#039;title&amp;#039;][index] = all_contributors[&amp;#039;title&amp;#039;][index] or {}&lt;br /&gt;
		all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;param_name&amp;#039;] = all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;param_name&amp;#039;] or &amp;#039;translator&amp;#039;&lt;br /&gt;
		all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;arg_param_name&amp;#039;] = all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;arg_param_name&amp;#039;] or &amp;#039;translator&amp;#039;&lt;br /&gt;
		all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;override&amp;#039;] = all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;override&amp;#039;] or nil&lt;br /&gt;
		all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;values&amp;#039;] = all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;values&amp;#039;] or {}&lt;br /&gt;
		-- رفعِ اشکال: جایگاهِ درج را با یافتنِ بزرگ‌ترین کلیدِ عددیِ موجود&lt;br /&gt;
		-- صراحتاً تعیین می‌کنیم؛ به عملگرِ طولِ # روی جدولِ احتمالاً ناپیوسته&lt;br /&gt;
		-- تکیه نمی‌کنیم (نکتهٔ ۲ در یادداشتِ بالای فایل).&lt;br /&gt;
		local max_n = 0&lt;br /&gt;
		for existing_n in pairs(all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;values&amp;#039;]) do&lt;br /&gt;
			if type(existing_n) == &amp;#039;number&amp;#039; and existing_n &amp;gt; max_n then&lt;br /&gt;
				max_n = existing_n&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		all_contributors[&amp;#039;title&amp;#039;][index][&amp;#039;values&amp;#039;][max_n + 1] = {text = &amp;#039;wikisource&amp;#039;}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local contributors = {&lt;br /&gt;
		title = {},&lt;br /&gt;
		section = {}&lt;br /&gt;
	}&lt;br /&gt;
	for section_key, section_values in pairs(all_contributors) do&lt;br /&gt;
		for i, contrib in ipairs(TableTools.compressSparseArray(section_values)) do&lt;br /&gt;
			local new_contrib = {}&lt;br /&gt;
			for k, v in pairs(TableTools.shallowClone(contrib)) do&lt;br /&gt;
				if k == &amp;#039;values&amp;#039; then&lt;br /&gt;
					new_contrib[k] = TableTools.compressSparseArray(v)&lt;br /&gt;
				else&lt;br /&gt;
					new_contrib[k] = v&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(contributors[section_key], new_contrib)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return contributors&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.get_attribution_params(args)&lt;br /&gt;
	return get_attribution_params(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function construct_attribution_span(args)&lt;br /&gt;
	-- رفعِ اشکال: افزودنِ ‎:done()‎ تا aspan به گرهٔ بیرونیِ span.vcard اشاره&lt;br /&gt;
	-- کند، نه به گرهٔ داخلیِ span.fn (نکتهٔ ۱ در یادداشتِ بالای فایل).&lt;br /&gt;
	local aspan = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;vcard&amp;#039;)&lt;br /&gt;
		:attr(&amp;#039;id&amp;#039;, &amp;#039;header-&amp;#039; .. args.span_param_name .. &amp;#039;-text&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;span&amp;#039;):addClass(&amp;#039;fn&amp;#039;):wikitext(args.atext)&lt;br /&gt;
		:done()&lt;br /&gt;
	&lt;br /&gt;
	return tostring(mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;contributor-text&amp;#039;)&lt;br /&gt;
		:wikitext(args.prefix .. tostring(aspan))&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function construct_attribution(args)&lt;br /&gt;
	local data = args.data&lt;br /&gt;
	local param_name = data[&amp;#039;param_name&amp;#039;]&lt;br /&gt;
	local span_param_name = param_name&lt;br /&gt;
	local prefix = p[&amp;#039;attr_data&amp;#039;][param_name][&amp;#039;prefix&amp;#039;] .. &amp;#039;&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
	local is_section = args.is_section&lt;br /&gt;
	&lt;br /&gt;
	if data[&amp;#039;arg_param_name&amp;#039;] == &amp;#039;section-author&amp;#039; then&lt;br /&gt;
		span_param_name = &amp;#039;contributor&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if data[&amp;#039;arg_param_name&amp;#039;] == &amp;#039;author&amp;#039; and data[&amp;#039;override&amp;#039;] then&lt;br /&gt;
		prefix = &amp;#039;&amp;#039; -- پارامترِ قدیمی (legacy)&lt;br /&gt;
	elseif param_name == &amp;#039;translator&amp;#039; and args.languages then&lt;br /&gt;
		prefix = p[&amp;#039;attr_data&amp;#039;][param_name][&amp;#039;language_prefix&amp;#039;](args.language_name or &amp;#039;زبان نامشخص&amp;#039;) .. &amp;#039;&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- override (پارامترِ قدیمی/legacy)&lt;br /&gt;
	local atext = data[&amp;#039;override&amp;#039;]&lt;br /&gt;
	if atext then&lt;br /&gt;
		if args.is_translation and param_name == &amp;#039;translator&amp;#039; then&lt;br /&gt;
			atext = atext .. &amp;#039; و &amp;#039; .. p[&amp;#039;attr_data&amp;#039;][param_name][&amp;#039;special_cases&amp;#039;][&amp;#039;wikisource&amp;#039;]&lt;br /&gt;
		end&lt;br /&gt;
		return construct_attribution_span({span_param_name = span_param_name, prefix = prefix, atext = atext, is_section = is_section})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local contributors = {}&lt;br /&gt;
	for i, contributor in ipairs(data[&amp;#039;values&amp;#039;]) do&lt;br /&gt;
		local text = contributor[&amp;#039;text&amp;#039;]&lt;br /&gt;
		local display = contributor[&amp;#039;display&amp;#039;]&lt;br /&gt;
		local nolink = yesno(contributor[&amp;#039;nolink&amp;#039;]) or false&lt;br /&gt;
		&lt;br /&gt;
		if nolink then&lt;br /&gt;
			table.insert(contributors, display or text)&lt;br /&gt;
		elseif text then&lt;br /&gt;
			local special = false&lt;br /&gt;
			for k, v in pairs(p[&amp;#039;attr_data&amp;#039;][param_name][&amp;#039;special_cases&amp;#039;]) do&lt;br /&gt;
				if string.lower(text) == k then&lt;br /&gt;
					special = true&lt;br /&gt;
					if type(v) == &amp;#039;function&amp;#039; then&lt;br /&gt;
						display = v(display)&lt;br /&gt;
					else&lt;br /&gt;
						display = v&lt;br /&gt;
					end&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if not special then&lt;br /&gt;
				if not display then&lt;br /&gt;
					display = string.gsub(text, &amp;#039; %(.*%)$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
				-- بومی‌سازی: فضای‌نامِ «پدیدآورنده:» معادلِ «Author:» در&lt;br /&gt;
				-- ویکی‌نبشتهٔ فارسی است.&lt;br /&gt;
				display = &amp;#039;[[پدیدآورنده:&amp;#039; .. text .. &amp;#039;|&amp;#039; .. display .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			if display then&lt;br /&gt;
				table.insert(contributors, display)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			mw.logObject(contributor)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #contributors == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif #contributors == 1 then&lt;br /&gt;
		atext = contributors[1]&lt;br /&gt;
	else&lt;br /&gt;
		atext = table.concat(contributors, &amp;#039;، &amp;#039;, 1, #contributors - 1) .. &amp;#039; و &amp;#039; .. contributors[#contributors]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- بررسیِ موقتِ پارامترِ تصویرگر در زیرصفحه‌ها (برگرفته از یادداشتِ TODO&lt;br /&gt;
	-- مشابه در نسخهٔ انگلیسی: پس از یکسان‌سازیِ کاملِ زیرصفحه‌ها با پارامترِ&lt;br /&gt;
	-- section-illustrator قابلِ‌حذف است).&lt;br /&gt;
	local cat = &amp;#039;&amp;#039;&lt;br /&gt;
	if param_name == &amp;#039;illustrator&amp;#039; and mw.title.getCurrentTitle().isSubpage and not is_section then&lt;br /&gt;
		cat = &amp;#039;[[&amp;#039; .. &amp;#039;رده:&amp;#039; .. &amp;#039;زیرصفحه‌های استفاده‌کننده از پارامتر تصویرگر&amp;#039; .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local s = construct_attribution_span({span_param_name = span_param_name, prefix = prefix, atext = atext, is_section = is_section})&lt;br /&gt;
	&lt;br /&gt;
	return s .. cat&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.construct_attributions(args)&lt;br /&gt;
	local attributions = {}&lt;br /&gt;
	&lt;br /&gt;
	local a_args = TableTools.shallowClone(args)&lt;br /&gt;
	local attr_params = get_attribution_params(args)[&amp;#039;title&amp;#039;]&lt;br /&gt;
	for i, data in ipairs(attr_params) do&lt;br /&gt;
		a_args[&amp;#039;data&amp;#039;] = data&lt;br /&gt;
		a_args[&amp;#039;is_section&amp;#039;] = false&lt;br /&gt;
		local atext = construct_attribution(a_args)&lt;br /&gt;
		if atext then&lt;br /&gt;
			table.insert(attributions, atext)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #attributions == 0 then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(attributions, &amp;#039;، &amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- بخش (section)&lt;br /&gt;
&lt;br /&gt;
function p.construct_section(args)&lt;br /&gt;
	local section_text = args[&amp;#039;section&amp;#039;]&lt;br /&gt;
	&lt;br /&gt;
	if not section_text or section_text == &amp;#039;&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local attributions = {}&lt;br /&gt;
	&lt;br /&gt;
	local a_args = TableTools.shallowClone(args)&lt;br /&gt;
	a_args.languages = a_args.section_languages or a_args.languages&lt;br /&gt;
	a_args.language_name = a_args.section_language_name or a_args.language_name&lt;br /&gt;
	&lt;br /&gt;
	local attr_params = get_attribution_params(args)[&amp;#039;section&amp;#039;]&lt;br /&gt;
	for i, data in ipairs(attr_params) do&lt;br /&gt;
		a_args[&amp;#039;data&amp;#039;] = data&lt;br /&gt;
		a_args[&amp;#039;is_section&amp;#039;] = true&lt;br /&gt;
		local atext = construct_attribution(a_args)&lt;br /&gt;
		if atext then&lt;br /&gt;
			table.insert(attributions, atext)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #attributions &amp;gt; 0 then&lt;br /&gt;
		local sep = &amp;#039; &amp;#039;&lt;br /&gt;
		if #attributions &amp;gt; 1 then&lt;br /&gt;
			sep = &amp;#039;&amp;lt;br/&amp;gt;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		section_text = section_text .. sep .. table.concat(attributions, &amp;#039;، &amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring(mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;header-section-text&amp;#039;)&lt;br /&gt;
		:wikitext(section_text)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
ساختنِ ریزقالبِ (Help:Microformat) صفحه.&lt;br /&gt;
&lt;br /&gt;
به این شکل است:&lt;br /&gt;
&amp;lt;div id=&amp;quot;ws-data&amp;quot; ...&amp;gt;&lt;br /&gt;
  &amp;lt;span id=&amp;quot;ws-title&amp;quot;&amp;gt;عنوان اینجا...&amp;lt;/span&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
هشدار: id=&amp;quot;ws-data&amp;quot;، id=&amp;quot;ws-title&amp;quot; و مانندِ آن‌ها را تغییر ندهید. ابزارهای&lt;br /&gt;
برون‌ویکی مانندِ ws-export برای استخراجِ اطلاعات و ساختنِ EPUB/PDF به همینِ&lt;br /&gt;
شناسه‌های ثابت (به‌همین صورتِ انگلیسی، در همهٔ نگارش‌های زبانیِ ویکی‌نبشته)&lt;br /&gt;
وابسته‌اند.&lt;br /&gt;
]=]&lt;br /&gt;
function p.construct_microformat(args)&lt;br /&gt;
	local mf_div =  mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;ws-noexport&amp;#039;)&lt;br /&gt;
		:attr(&amp;#039;id&amp;#039;, &amp;#039;ws-data&amp;#039;)&lt;br /&gt;
		:css({speak = &amp;#039;none&amp;#039;})&lt;br /&gt;
	&lt;br /&gt;
	-- override برای نمایشِ ریزقالب&lt;br /&gt;
	if yesno(args[&amp;#039;show-microformat&amp;#039;]) then&lt;br /&gt;
		mf_div:addClass(&amp;#039;ws-data-show&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- مقادیرِ ریزقالب اینجا جمع می‌شوند&lt;br /&gt;
	local mf = {};&lt;br /&gt;
	&lt;br /&gt;
	-- شناسهٔ صفحه&lt;br /&gt;
	mf[&amp;#039;ws-article-id&amp;#039;] = mw.title.getCurrentTitle().id &lt;br /&gt;
	&lt;br /&gt;
	-- عنوان&lt;br /&gt;
	if args[&amp;#039;title&amp;#039;] then&lt;br /&gt;
		mf[&amp;#039;ws-title&amp;#039;] = args[&amp;#039;title&amp;#039;]&lt;br /&gt;
		&lt;br /&gt;
		-- افزودنِ بخش، اگر وجود داشته باشد&lt;br /&gt;
		if args[&amp;#039;section&amp;#039;] then&lt;br /&gt;
			mf[&amp;#039;ws-title&amp;#039;] = mf[&amp;#039;ws-title&amp;#039;] .. &amp;quot; — &amp;quot; .. args[&amp;#039;section&amp;#039;]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- سال&lt;br /&gt;
	mf[&amp;#039;ws-year&amp;#039;] = args[&amp;#039;year&amp;#039;]&lt;br /&gt;
	&lt;br /&gt;
	-- جلد&lt;br /&gt;
	mf[&amp;#039;ws-cover&amp;#039;] = args[&amp;#039;cover&amp;#039;]&lt;br /&gt;
	&lt;br /&gt;
	-- استفاده از مقادیرِ بخش در صورتِ وجود، وگرنه مقادیرِ کلِ اثر&lt;br /&gt;
	local attr_params = get_attribution_params(args)&lt;br /&gt;
	local joined_attr_params = {}&lt;br /&gt;
	for i, section_key in ipairs({&amp;#039;section&amp;#039;, &amp;#039;title&amp;#039;}) do&lt;br /&gt;
		for i, data in ipairs(attr_params[section_key]) do&lt;br /&gt;
			local index = p[&amp;#039;attr_data&amp;#039;][data[&amp;#039;param_name&amp;#039;]][&amp;#039;index&amp;#039;]&lt;br /&gt;
			joined_attr_params[index] = joined_attr_params[index] or data&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	joined_attr_params = TableTools.compressSparseArray(joined_attr_params)&lt;br /&gt;
	&lt;br /&gt;
	for i, data in ipairs(joined_attr_params) do&lt;br /&gt;
		local atext = data[&amp;#039;override&amp;#039;]&lt;br /&gt;
		-- رفعِ اشکال/بومی‌سازی: به‌جای سنجشِ نامِ ثابتِ انگلیسیِ الگو، از&lt;br /&gt;
		-- پرچمِ is_translation استفاده می‌شود (نکتهٔ ۳ در یادداشتِ بالای&lt;br /&gt;
		-- فایل).&lt;br /&gt;
		local ws_translator = args.is_translation and data[&amp;#039;param_name&amp;#039;] == &amp;#039;translator&amp;#039;&lt;br /&gt;
		if atext and ws_translator then&lt;br /&gt;
			atext = atext .. &amp;#039; و ویکی‌نبشته&amp;#039;&lt;br /&gt;
		elseif not atext then&lt;br /&gt;
			local attr_text = {}&lt;br /&gt;
			for i, values in ipairs(data[&amp;#039;values&amp;#039;]) do&lt;br /&gt;
				local display = values[&amp;#039;text&amp;#039;]&lt;br /&gt;
				local special = false&lt;br /&gt;
				if values[&amp;#039;text&amp;#039;] then&lt;br /&gt;
					for k, v in pairs(p[&amp;#039;attr_data&amp;#039;][data[&amp;#039;param_name&amp;#039;]][&amp;#039;special_cases&amp;#039;]) do&lt;br /&gt;
						if string.lower(values[&amp;#039;text&amp;#039;]) == k then&lt;br /&gt;
							special = true&lt;br /&gt;
							if k == &amp;#039;anon&amp;#039; or k == &amp;#039;anonymous&amp;#039; then&lt;br /&gt;
								display = &amp;#039;ناشناس&amp;#039;&lt;br /&gt;
							elseif k == &amp;#039;wikisource&amp;#039; then&lt;br /&gt;
								display = &amp;#039;ویکی‌نبشته&amp;#039;&lt;br /&gt;
							elseif type(v) == &amp;#039;function&amp;#039; then&lt;br /&gt;
								display = v(display)&lt;br /&gt;
							else&lt;br /&gt;
								display = v&lt;br /&gt;
							end&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					mw.logObject(values)&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(attr_text, display)&lt;br /&gt;
			end&lt;br /&gt;
			if #attr_text == 1 then&lt;br /&gt;
				atext = attr_text[1]&lt;br /&gt;
			elseif #attr_text &amp;gt; 1 then&lt;br /&gt;
				atext = table.concat(attr_text, &amp;#039;، &amp;#039;, 1, #attr_text - 1) .. &amp;#039; و &amp;#039; .. attr_text[#attr_text]&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if atext then&lt;br /&gt;
			mf[&amp;#039;ws-&amp;#039; .. data[&amp;#039;param_name&amp;#039;]] = atext&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs(mf) do&lt;br /&gt;
		mf_div:tag(&amp;#039;span&amp;#039;):attr(&amp;#039;id&amp;#039;, k):wikitext(v)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring(mf_div)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
</feed>