پرش به محتوا

پودمان:Footnotes

پودمان به طور دائم حفاظت‌شده است
از ویکی‌پدیا، دانشنامهٔ آزاد

نسخه‌ای که می‌بینید نسخه‌ای قدیمی از صفحه است که توسط علیرضا (بحث | مشارکت‌ها) در تاریخ ‏۷ اکتبر ۲۰۱۴، ساعت ۱۵:۳۲ ویرایش شده است. این نسخه ممکن است تفاوت‌های عمده‌ای با نسخهٔ فعلی داشته باشد.

توضیحات پودمان[نمایش] [ویرایش] [تاریخچه] [پاکسازی]

این پودمان {{sfn}}، {{harvard citation}} و انواع آن الگوها را پیاده‌سازی می‌کند..

-- بخش‌هایی از این پودمان برای خروجی فارسی و انگلیسی مناسب تغییر کرده‌است. لطفاً هنگام به‌روزرسانی دقت کنید.

local getArgs = require("Module:Arguments").getArgs

f = {
	args_default = {
		bracket_left = "",
		bracket_right = "",
		bracket_year_left = "",
		bracket_year_right = "",
		postscript = "",
		page = "",
		pages = "",
		location = "",
		page_sep = "، ص&nbsp",
		pages_sep = "، صص&nbsp",
		ref = "",
		P1 = "",
		P2 = "",
		P3 = "",
		P4 = "",
		P5 = "",
		-- برای خروجی فارسی و انگلیسی خطوط زیر اضافه شده‌اند.
		andOthers = "و دیگران."
	}
}

function trim( str )
	if str == nil then
		return nil
	end
	return str:match( "^%s*(.-)%s*$")
end    

function core( args )
	local result

	if args.P5 ~= "" then
		-- خط زیر برای خروجی مناسب تغییر کرده‌است.
		result = args.P1 .. ' ' .. args.andOthers .. ' ' .. args.bracket_year_left .. args.P5 .. 
		args.bracket_year_right
	elseif args.P4 ~= "" then
		result = args.P1 .. '، ' .. args.P2 .. ' &amp ' .. args.P3 .. ' ' .. 
		args.bracket_year_left .. args.P4 .. args.bracket_year_right
	elseif args.P3 ~= "" then
		result = args.P1 .. ' &amp ' .. args.P2 .. ' ' .. args.bracket_year_left .. 
		args.P3 .. args.bracket_year_right
	else
		result = trim( args.P1 .. ' ' .. args.bracket_year_left .. args.P2 .. 
			args.bracket_year_right )
	end

	if args.ref ~= 'none' then
		if args.ref ~= "" then
			result = "[[#" .. args.ref .. "|" .. result .. "]]"
		else
			result = "[[#CITEREF" .. args.P1 .. args.P2 .. args.P3 .. args.P4 .. args.P5 .. "|" .. result .. "]]"
		end
	end

	if args.page ~= "" then
		result = result .. args.page_sep .. args.page
	elseif args.pages ~= "" then
		result = result .. args.pages_sep .. args.pages
	end      

	if args.location ~= "" then
		result = result .. ", " .. args.location
	end

	result = args.bracket_left .. result .. args.bracket_right .. args.postscript
	return result
end

function f.harvard_core( frame )
	local defArgs = {}
	local args = getArgs(frame)

	defArgs.bracket_left = args.BracketLeft or ""
	defArgs.bracket_right = args.BracketRight or ""
	defArgs.bracket_year_left = args.BracketYearLeft or ""
	defArgs.bracket_year_right = args.BracketYearRight or ""
	defArgs.postscript = args.Postscript or ""
	defArgs.page = args.Page or ""
	defArgs.pages = args.Pages or ""
	defArgs.location = args.Location or ""
	defArgs.page_sep = args.PageSep or ""
	defArgs.pages_sep = args.PagesSep or ""
	defArgs.ref = args.REF or "{{{REF}}}"
	defArgs.P1 = trim( args.P1 ) or ""
	defArgs.P2 = trim( args.P2 ) or ""
	defArgs.P3 = trim( args.P3 ) or ""
	defArgs.P4 = trim( args.P4 ) or ""
	defArgs.P5 = trim( args.P5 ) or ""
	-- برای خروجی فارسی و انگلیسی خطوط زیر اضافه شده‌اند.
	defArgs.andOthers = trim( args.AndOthers ) or ""

	return core( defArgs )
end

function f.harvard_citation( frame )
	local defArgs = f.args_default
	local args = getArgs(frame)

	defArgs.bracket_left = "("
	defArgs.bracket_right = ")"
	defArgs.page = args.p or args.page or ""
	defArgs.pages = args.pp or args.pages or ""
	defArgs.location = args.loc or ""
	defArgs.ref = args.ref or args.Ref or ""
	defArgs.P1 = trim( args[1] ) or ""
	defArgs.P2 = trim( args[2] ) or ""
	defArgs.P3 = trim( args[3] ) or ""
	defArgs.P4 = trim( args[4] ) or ""
	defArgs.P5 = trim( args[5] ) or ""
	-- برای خروجی فارسی و انگلیسی خطوط زیر اضافه شده‌اند.
	defArgs.andOthers = trim( args.AndOthers ) or ""
	defArgs.page_sep = args.PageSep or ""
	defArgs.pages_sep = args.PagesSep or ""

	return core( defArgs )
end

function f.harvard_citation_no_bracket( frame )
	local defArgs = f.args_default
	local args = getArgs(frame)

	defArgs.page = args.p or args.page or ""
	defArgs.pages = args.pp or args.pages or ""
	defArgs.location = args.loc or ""
	defArgs.ref = args.ref or args.Ref or ""
	defArgs.P1 = trim( args[1] ) or ""
	defArgs.P2 = trim( args[2] ) or ""
	defArgs.P3 = trim( args[3] ) or ""
	defArgs.P4 = trim( args[4] ) or ""
	defArgs.P5 = trim( args[5] ) or ""
	-- برای خروجی فارسی و انگلیسی خطوط زیر اضافه شده‌اند.
	defArgs.andOthers = trim( args.AndOthers ) or ""
	defArgs.page_sep = args.PageSep or ""
	defArgs.pages_sep = args.PagesSep or ""

	return core( defArgs )
end

function f.sfn( frame )
	local defArgs = f.args_default
	local args = getArgs(frame)

	defArgs.postscript = args.postscript or args.ps or "."
	defArgs.page = args.p or args.page or ""
	defArgs.pages = args.pp or args.pages or ""
	defArgs.location = args.loc or ""
	defArgs.ref = args.ref or args.Ref or ""
	defArgs.P1 = trim( args[1] ) or ""
	defArgs.P2 = trim( args[2] ) or ""
	defArgs.P3 = trim( args[3] ) or ""
	defArgs.P4 = trim( args[4] ) or ""
	defArgs.P5 = trim( args[5] ) or ""
	-- برای خروجی فارسی و انگلیسی خطوط زیر اضافه شده‌اند.
	defArgs.andOthers = trim( args.AndOthers ) or ""
	defArgs.page_sep = args.PageSep or ""
	defArgs.pages_sep = args.PagesSep or ""

	local result = core( defArgs )
	local name = "FOOTNOTE" .. defArgs.P1 .. defArgs.P2 .. 
	defArgs.P3 .. defArgs.P4 .. defArgs.P5 .. defArgs.page .. defArgs.pages .. defArgs.location

	result = frame:extensionTag{ name = "ref", args = {name=name}, content=result }

	return result
end

return f