Anda dapat membuat halaman dokumentasi untuk buat pada modul Scribunto ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
f={ args_default={ bracket_left="", bracket_right="", bracket_year_left="", bracket_year_right="", postscript="", page="", pages="", location="", page_sep=", hlm. ", pages_sep=", hlm. ", ref="", P1="", P2="", P3="", P4="", P5="" } }; functiontrim(str) ifstr==nilthen returnnil; end returnstr:match("^%s*(.-)%s*$"); end functioncore(args) localresult; --TODO: evaluate to make sure that the following if correctly handles the parameter set when there is no year ifargs.P5~=""then result=args.P1..' <i>et al</i>. '..args.bracket_year_left..args.P5.. args.bracket_year_right; elseifargs.P4~=""then result=args.P1..', '..args.P2..' & '..args.P3..' '.. args.bracket_year_left..args.P4..args.bracket_year_right; elseifargs.P3~=""then result=args.P1..' & '..args.P2..' '..args.bracket_year_left.. args.P3..args.bracket_year_right; elseifargs.P2~=""then ifnotargs.P2:match('%d%d%d%d')andnotargs.P2:match('n%.d%.')andnotargs.P2:match('nd')then result=args.P1..' & '..args.P2;-- for the case where the last numbered parameter is a name and not a year and not no-date else result=args.P1..' '..args.bracket_year_left..args.P2..args.bracket_year_right; end else result=trim(args.P1..' '..args.bracket_year_left..args.P2.. args.bracket_year_right) end if('.'==result:sub(-1))and(''==args.page)and(''==args.pages)and(''==args.location)then args.postscript='';-- prevent double periods when date is 'n.d.' end ifargs.ref~='none'then ifargs.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 ifargs.page~=""then result=result..args.page_sep..args.page; elseifargs.pages~=""then result=result..args.pages_sep..args.pages; end ifargs.location~=""then result=result..", "..args.location; end result=args.bracket_left..result..args.bracket_right..args.postscript; returnresult; end functionf.harvard_core(frame) localargs={}; localpframe=frame:getParent(); args.bracket_left=pframe.args.BracketLeftor""; args.bracket_right=pframe.args.BracketRightor""; args.bracket_year_left=pframe.args.BracketYearLeftor""; args.bracket_year_right=pframe.args.BracketYearRightor""; args.postscript=pframe.args.Postscriptor""; if'none'==args.postscriptthen args.postscript=''; end args.page=pframe.args.Pageor""; args.pages=pframe.args.Pagesor""; args.location=pframe.args.Locationor""; args.page_sep=pframe.args.PageSepor""; args.pages_sep=pframe.args.PagesSepor""; args.ref=pframe.args.REFor"{{{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""; returncore(args); end functionf.harvard_citation(frame) localargs=f.args_default; pframe=frame:getParent(); args.bracket_left="("; args.bracket_right=")"; args.page=pframe.args.porpframe.args.pageor""; args.pages=pframe.args.pporpframe.args.pagesor""; args.location=pframe.args.locor""; args.ref=pframe.args.reforpframe.args.Refor""; 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""; returncore(args); end functionf.harvard_citation_no_bracket(frame) localargs=f.args_default; pframe=frame:getParent(); args.page=pframe.args.porpframe.args.pageor""; args.pages=pframe.args.pporpframe.args.pagesor""; args.location=pframe.args.locor""; args.ref=pframe.args.reforpframe.args.Refor""; 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""; returncore(args); end functionf.sfn(frame) localargs=f.args_default; fork,vinpairs(frame.args)do-- for {{sfnp}}, override default with values provided in the #invoke: args[k]=v; end pframe=frame:getParent(); args.postscript=pframe.args.postscriptorpframe.args.psor"."; if'none'==args.postscriptthen args.postscript=''; end args.page=pframe.args.porpframe.args.pageor""; args.pages=pframe.args.pporpframe.args.pagesor""; args.location=pframe.args.locor""; args.ref=pframe.args.reforpframe.args.Refor""; 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""; localresult=core(args); localname="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}; returnresult; end returnf;