请输入您要查询的百科知识:

 

词条 Module:Footnotes/sandbox2
释义

f = {

args_default = {

bracket_left = "",

bracket_right = "",

bracket_year_left = "",

bracket_year_right = "",

postscript = "",

page = "",

pages = "",

location = "",

article = "",

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

local function is_year (param)

return param:match ('^%d%d%d%d?%l?$') or param:match ('^n%.d%.%l?$') or param:match ('^nd%l?$') or param:match ('^c%. %d%d%d%d?%l?$') or param:match ('^%d%d%d%d–%d%d%d%d%l?$');

end

function core( args )

local result;

if args.P5 ~= "" then

if is_year (args.P5) then

result = table.concat ({args.P1, ' et al. ', args.bracket_year_left, args.P5, args.bracket_year_right});

else

args.P5 = ; -- when P5 not a year don't include in anchor

result = table.concat ({args.P1, ' et al.'}); -- and don't render it

end

elseif args.P4 ~= "" then

if is_year (args.P4) then

result = table.concat ({args.P1, ', ', args.P2, ' & ', args.P3, ' ', args.bracket_year_left, args.P4, args.bracket_year_right}); -- three names and a year

else

result = table.concat ({args.P1, ' et al.'}); -- four names

end

elseif args.P3 ~= "" then

if is_year (args.P3) then

result = table.concat ({args.P1, ' & ', args.P2, ' ', args.bracket_year_left, args.P3, args.bracket_year_right}); -- two names and a year

else

result = table.concat ({args.P1, ', ', args.P2, ' ', ' & ', args.P3}); -- three names

end

elseif args.P2 ~= "" then

if is_year (args.P2) then

result = table.concat ({args.P1, ' ', args.bracket_year_left, args.P2, args.bracket_year_right}); -- one name and year

else

result = table.concat ({args.P1, ' & ', args.P2}); -- two names

end

else

result = args.P1; -- one name

end

-- when author-date result ends with a dot (typically when the last positional parameter holds 'n.d.')

-- and when no in-source location (no |p=, |pp=, or |loc=)

-- and when the first or only character in args.postscript is a dot

-- remove the author-date result trailing dot

-- the author-date result trailing dot will be replaced later with the content of args.postscript (usually a dot)

if ('.' == result:sub(-1)) and ('.' == args.postscript:sub(1)) and ( == args.page) and ( == args.pages) and ( == args.location) then

result = result:gsub ('%.$', );

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 = table.concat ({args.bracket_left, result, args.bracket_right, args.postscript}):gsub ('%s+', ' '); -- strip redundant spaces

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, args )

local args = args or 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 );

-- put it all together and then strip redundant spaces

local name = table.concat ({'FOOTNOTE', args.P1, args.P2, args.P3, args.P4, args.P5, args.page, args.pages, args.location}):gsub ('%s+', ' ');

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

return result;

end

function f.sfnt( frame )

local args = f.args_default;

args.article = mw.title.getCurrentTitle().subjectPageTitle.fullText;

args.article = string.gsub(args.article, "Wikipedia:Articles for deletion/", "", 1);

return f.sfn(frame, args);

end

return f;

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/11 8:34:18