Module:Footnotes

f = {}; function core( args ) local result; if args.P5 ~= "" then result = args.P1 .. ' et al. ' .. args.bracket_year_left .. args.P5; elseif args.P4 ~= "" then result = args.P1 .. ', ' .. args.P2 .. ' &amp ' .. args.P3 .. ' ' .. args.bracket_year_left .. args.P4; elseif args.P3 ~= "" then result = args.P1 .. ' &amp ' .. args.P2 .. ' ' .. args.bracket_year_left .. args.P3; else result = args.P1 .. ' ' .. args.bracket_year_left .. args.P2   end if args.ref ~= 'none' then if args.ref ~= "" then result = "" .. result .. ""; else result = "" .. 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 = {}; args.bracket_left = frame.args.BracketLeft or ""; args.bracket_right = frame.args.BracketRight or ""; args.postscript = frame.args.Postscript or ""; args.page = frame.args.Page or ""; args.pages = frame.args.Pages or ""; args.location = frame.args.Location or ""; args.page_sep = frame.args.PageSep or ""; args.pages_sep = frame.args.PagesSep or ""; args.ref = frame.args.REF or ""; args.P1 = frame.args[1] or ""; args.P2 = frame.args[2] or ""; args.P3 = frame.args[3] or ""; args.P4 = frame.args[4] or ""; args.P5 = frame.args[5] or ""; return core( args ); end

function f.harvard_citation( frame ) local args = {}; pframe = frame:getParent; args.bracket_left = "(";   args.bracket_right = ")"; args.postscript = ""; args.page = pframe.args.p or pframe.args.page or ""; args.pages = pframe.args.pp or pframe.args.pages or ""; args.location = frame.args.loc or ""; args.page_sep = ", p. "; args.pages_sep = ", pp. "; args.ref = pframe.args.ref or pframe.args.REF or ""; args.P1 = pframe.args[1] or ""; args.P2 = pframe.args[2] or ""; args.P3 = pframe.args[3] or ""; args.P4 = pframe.args[4] or ""; args.P5 = pframe.args[5] or ""; return core( args ); end function f.harvard_citation_no_bracket( frame ) local args = {}; pframe = frame:getParent; args.bracket_left = ""; args.bracket_right = ""; args.postscript = ""; args.page = pframe.args.p or pframe.args.page or ""; args.pages = pframe.args.pp or pframe.args.pages or ""; args.location = frame.args.loc or ""; args.page_sep = ", p. "; args.pages_sep = ", pp. "; args.ref = pframe.args.ref or pframe.args.REF or ""; args.P1 = pframe.args[1] or ""; args.P2 = pframe.args[2] or ""; args.P3 = pframe.args[3] or ""; args.P4 = pframe.args[4] or ""; args.P5 = pframe.args[5] or ""; return core( args ); end