Broken/Footnotes

Izvor: Hrvatska internetska enciklopedija
Inačica 640281 od 12. siječanj 2026. u 10:07 koju je unio WikiSysop (razgovor | doprinosi)
(razl) ←Starija inačica | vidi trenutačnu inačicu (razl) | Novija inačica→ (razl)
Prijeđi na navigaciju Prijeđi na pretraživanje

local f = {}

f.args_default = {

   bracket_left = "",
   bracket_right = "",
   bracket_year_left = "",
   bracket_year_right = "",
   postscript = "",
   page = "",
   pages = "",
   location = "",
   page_sep = ", str. ",
   pages_sep = ", str. ",
   ref = "",
   P1 = "",
   P2 = "",
   P3 = "",
   P4 = "",
   P5 = ""

}

local function trim(str)

   if not str then return "" end
   str = mw.text.trim(str)
   return str:gsub("%.$", "")

end

local 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 .. " i " .. args.P3 .. " " ..
           args.bracket_year_left .. args.P4 .. args.bracket_year_right
   elseif args.P3 ~= "" then
       result = args.P1 .. " i " .. 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
   -- REF handling
   if args.ref ~= "none" then
       if args.ref ~= "" then
           result = "" .. result .. ""
       else
           local anchor = args.P1 .. args.P2 .. args.P3 .. args.P4 .. args.P5
           result = "" .. result .. ""
       end
   end
   -- pages
   if args.page ~= "" then
       result = result .. args.page_sep .. args.page
   elseif args.pages ~= "" then
       result = result .. args.pages_sep .. args.pages
   end
   -- location
   if args.location ~= "" then
       result = result .. ", " .. args.location
   end
   return args.bracket_left .. result .. args.bracket_right .. args.postscript

end

function f.harvard_core(frame)

   local pframe = frame:getParent()
   local args = mw.clone(f.args_default)
   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 == "none") and "" or (pframe.args.Postscript or "")
   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.page_sep
   args.pages_sep = pframe.args.PagesSep or args.pages_sep
   args.ref = pframe.args.REF or ""
   args.P1 = trim(pframe.args.P1)
   args.P2 = trim(pframe.args.P2)
   args.P3 = trim(pframe.args.P3)
   args.P4 = trim(pframe.args.P4)
   args.P5 = trim(pframe.args.P5)
   return core(args)

end

function f.harvard_citation(frame)

   local pframe = frame:getParent()
   local args = mw.clone(f.args_default)
   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])
   args.P2 = trim(pframe.args[2])
   args.P3 = trim(pframe.args[3])
   args.P4 = trim(pframe.args[4])
   args.P5 = trim(pframe.args[5])
   return core(args)

end

function f.harvard_citation_no_bracket(frame)

   local pframe = frame:getParent()
   local args = mw.clone(f.args_default)
   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])
   args.P2 = trim(pframe.args[2])
   args.P3 = trim(pframe.args[3])
   args.P4 = trim(pframe.args[4])
   args.P5 = trim(pframe.args[5])
   return core(args)

end

function f.sfn(frame)

   local pframe = frame:getParent()
   local args = mw.clone(f.args_default)
   -- override defaults with #invoke args
   for k, v in pairs(frame.args) do
       args[k] = v
   end
   args.postscript = (pframe.args.postscript == "none") and "" or (pframe.args.postscript or pframe.args.ps or ".")
   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])
   args.P2 = trim(pframe.args[2])
   args.P3 = trim(pframe.args[3])
   args.P4 = trim(pframe.args[4])
   args.P5 = trim(pframe.args[5])
   local result = core(args)
   local name = "FOOTNOTE" ..
       args.P1 .. args.P2 .. args.P3 .. args.P4 .. args.P5 ..
       args.page .. args.pages .. args.location
   return frame:extensionTag{
       name = "ref",
       args = { name = name },
       content = result
   }

end

return f