Jump to content

Please sign and share the petition 'Tighten regulation on taking, making and faking explicit images' at Change.org initiated by Helen Mort to the w:Law Commission (England and Wales) to properly update UK laws against synthetic filth. Only name and email required to support, no nationality requirement. See Current and possible laws and their application @ #SSF! wiki for more info on the struggle for laws to protect humans.

Wiki.study content has been moved to Wiki.study at Consumerium.org development wiki. The wiki.study domain will expired on 2020-09-11.

Module:Footnotes

From Wikistudy.ByJuho.fi

Documentation for this module may be created at Module:Footnotes/doc

f = {
	args_default = {
		bracket_left = "",
		bracket_right = "",
		bracket_year_left = "",
		bracket_year_right = "",
		postscript = "",
		page = "",
		pages = "",
		location = "",
		page_sep = ", p. ",
		pages_sep = ", pp. ",
		ref = "",
		P1 = "",
		P2 = "",
		P3 = "",
		P4 = "",
		P5 = ""
	}
};

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 .. ' et al. ' .. args.bracket_year_left .. args.P5 .. 
		args.bracket_year_right;
	elseif args.P4 ~= "" then
		result = args.P1 .. ', ' .. args.P2 .. ' & ' .. args.P3 .. ' ' .. 
		args.bracket_year_left .. args.P4 .. args.bracket_year_right;
	elseif args.P3 ~= "" then
		result = args.P1 .. ' & ' .. 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 = "[[#" .. mw.uri.anchorEncode(args.ref) .. "|" .. result .. "]]";
		else
			result = "[[#CITEREF" .. mw.uri.anchorEncode(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 args = {};
	local pframe = frame:getParent();

	args.bracket_left = pframe.args.BracketLeft or "";
	args.bracket_right = pframe.args.BracketRight or "";
	args.bracket_year_left = pframe.args.BracketYearLeft or "";
	args.bracket_year_right = pframe.args.BracketYearRight or "";
	args.postscript = pframe.args.Postscript or "";
	if 'none' == args.postscript then
		args.postscript = '';
	end

	args.page = pframe.args.Page or "";
	args.pages = pframe.args.Pages or "";
	args.location = pframe.args.Location or "";
	args.page_sep = pframe.args.PageSep or "";
	args.pages_sep = pframe.args.PagesSep or "";
	args.ref = pframe.args.REF or "{{{REF}}}";
	args.P1 = trim( pframe.args.P1 ) or "";
	args.P2 = trim( pframe.args.P2 ) or "";
	args.P3 = trim( pframe.args.P3 ) or "";
	args.P4 = trim( pframe.args.P4 ) or "";
	args.P5 = trim( pframe.args.P5 ) or "";

	return core( args );
end

function f.harvard_citation( frame )
	local args = f.args_default;
	pframe = frame:getParent();

	args.bracket_left = "(";
	args.bracket_right = ")";
	args.page = pframe.args.p or pframe.args.page or "";
	args.pages = pframe.args.pp or pframe.args.pages or "";
	args.location = pframe.args.loc or "";
	args.ref = pframe.args.ref or pframe.args.Ref or "";
	args.P1 = trim( pframe.args[1] ) or "";
	args.P2 = trim( pframe.args[2] ) or "";
	args.P3 = trim( pframe.args[3] ) or "";
	args.P4 = trim( pframe.args[4] ) or "";
	args.P5 = trim( pframe.args[5] ) or "";

	return core( args );
end

function f.harvard_citation_no_bracket( frame )
	local args = f.args_default;
	pframe = frame:getParent();

	args.page = pframe.args.p or pframe.args.page or "";
	args.pages = pframe.args.pp or pframe.args.pages or "";
	args.location = pframe.args.loc or "";
	args.ref = pframe.args.ref or pframe.args.Ref or "";
	args.P1 = trim( pframe.args[1] ) or "";
	args.P2 = trim( pframe.args[2] ) or "";
	args.P3 = trim( pframe.args[3] ) or "";
	args.P4 = trim( pframe.args[4] ) or "";
	args.P5 = trim( pframe.args[5] ) or "";

	return core( args );
end

function f.sfn( frame )
	local args = f.args_default;
	for k, v in pairs( frame.args ) do											-- for {{sfnp}}, override default with values provided in the #invoke:
		args[k] = v;	   
	end
	
	pframe = frame:getParent();

	args.postscript = pframe.args.postscript or pframe.args.ps or ".";
	if 'none' == args.postscript then
		args.postscript = '';
	end
	args.page = pframe.args.p or pframe.args.page or "";
	args.pages = pframe.args.pp or pframe.args.pages or "";
	args.location = pframe.args.loc or "";
	args.ref = pframe.args.ref or pframe.args.Ref or "";
	args.P1 = trim( pframe.args[1] ) or "";
	args.P2 = trim( pframe.args[2] ) or "";
	args.P3 = trim( pframe.args[3] ) or "";
	args.P4 = trim( pframe.args[4] ) or "";
	args.P5 = trim( pframe.args[5] ) or "";

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

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

	return result;
end

return f;
We use only those cookies necessary for the functioning of the website.