Modul:Broken/Footnotes

Izvor: Hrvatska internetska enciklopedija
Prijeđi na navigaciju Prijeđi na pretraživanje

Script error: The function "nonexistent" does not exist.

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 = "[[#" .. mw.uri.anchorEncode(args.ref) .. "|" .. result .. "]]"
        else
            local anchor = args.P1 .. args.P2 .. args.P3 .. args.P4 .. args.P5
            result = "[[#CITEREF" .. mw.uri.anchorEncode(anchor) .. "|" .. 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