Module:Guidance

From the Audiovisual Identity Database, the motion graphics museum

Documentation for this module may be created at Module:Guidance/doc

local p = {} --p stands for package

r = { --keyword, short name, formatted name, severity
    { "flashing", "flashing images", "[[:wikipedia:photosensitive epilepsy|flashing images]]", 1 },
    { "graphic", "graphic violence", "graphic violence or gore", 2 },
    { "jumpscare", "a jump scare", "a [[:wikipedia:jump scare|jump scare]]", 1 },
    { "nudity", "nudity", "nudity", 2 },
    { "sex", "sexual activity", "sexual activity", 2 },
    { "language", "strong language", "strong language", 2 }
}
ri = 6

function p.reasons(frame)
    for i = ri, 1, -1 do
        if string.find(frame.args[1], r[i][1]) then
            if ro == nil then
                ro = r[i][3]
            elseif string.find(ro, ", and ") then
                ro = r[i][3] .. ", " .. ro
            else
                ro = r[i][3] .. ", and " .. ro
            end
        end
    end
    return ro
end

function p.warn_1(frame)
    for i = ri, 1, -1 do
        if string.find(frame.args[1], r[i][1]) and (r[i][4] == 1) then
            if w1 == nil then
                w1 = r[i][2] .. " occur."
            elseif string.find(w1, " and ") then
                w1 = r[i][2] .. ", " .. w1
            else
                w1 = r[i][2] .. " and " .. w1
            end
        end
    end
    return w1
end

function p.warn_2(frame)
    for i = ri, 1, -1 do
        if string.find(frame.args[1], r[i][1]) and (r[i][4] == 2) then
            if (w2 == nil) then
                w2 = r[i][2]
            elseif string.find(w2, " and ") then
                w2 = r[i][2] .. ", " .. w2
            else
                w2 = r[i][2] .. " and " .. w2
            end
        end
    end
    if w2 ~= nil then
        if string.find(w2, " and ") then
            w2 = w2 .. " are"
        else
            w2 = w2 .. " is"
        end
    end
    return w2
end

function p.category(frame)
    for i = 1, ri, 1 do
        if string.find(frame.args[1], r[i][1]) then
            if rc == nil then
                rc = "[[Category:Logos with content warnings for " .. r[i][2] .. "]]"
            else
                rc = rc .. "[[Category:Logos with content warnings for " .. r[i][2] .. "]]"
            end
        end
    end
    return rc
end

-- Function for the smaller "guidance detail" notices (under testing)
function p.small(frame)
    -- Banners
    bd = "none"
    b = {
        frame:expandTemplate {
            title = "ambox",
            args = {
                small = "left",
                type = "style",
                nocat = "yes",
                image = "[[File:Sound icon.png|30px]]",
                style = "margin:auto;max-width:480px;width:inherit;background:#f8f9fa;border: 0px solid #a2a9b1;border-left: 15px solid #ffa800;padding: 10px 0 10px 0.5em;",
                text = "'''The video of this logo may be too loud or severely distorted.'''"
            }
        },
        frame:expandTemplate {
            title = "ambox",
            args = {
                small = "left",
                type = "style",
                nocat = "yes",
                image = "[[File:Phone icon.png|30px]]",
                style = "margin:auto;max-width:480px;width:inherit;background:#f8f9fa;border: 0px solid #a2a9b1;border-left: 15px solid #ffa800;padding: 10px 0 10px 0.5em;",
                text = "'''This logo contains an old telephone number. Please do not try to dial it.'''"
            }
        }
    }
    -- Text
    for i = ri, 1, -1 do
        if string.find(frame.args[1], r[i][1]) and r[i][4] == 1 then
            if string.match(frame.args[1], r[i][1] .. '%([%d,:-]*%)') then
                ti = 0
                tt = {}
                for j in string.gmatch(string.match(frame.args[1], r[i][1] .. "%([%d,:-]*%)"), "[%d:-]+") do
                    ti = ti + 1
                    tt[ti] = j
                end
                for j = ti, 1, -1 do
                    if ts == nil then
                        ts = tt[j]
                    elseif string.find(ts, " and ") then
                        ts = tt[j] .. ", " .. ts
                    else
                        ts = tt[j] .. " and " .. ts
                    end
                end
                td = r[i][3] .. "''' at " .. ts
            else
                td = r[i][3] .. "''' for the whole duration"
            end
            if rd == nil then
                rd = td
            elseif string.find(rd, ", and ") then
                rd = td .. ", '''" .. rd
            else
                rd = td .. ", and '''" .. rd
            end
        end
    end
    if rd ~= nil then
        if string.find(frame.args[1], "jumpscare") then
            local jumpscareBanner = frame:expandTemplate {
                title = "ambox",
                args = {
                    small = "left",
                    type = "content",
                    nocat = "yes",
                    image = "[[File:Avid-jumpscare-ace.png|50px|link=]]",
                    style = "margin:auto;max-width:480px;width:inherit;background:#f8f9fa;border: 0px solid #a2a9b1;border-left: 15px solid #da0c3f;padding: 10px 0 10px 0.5em;",
                    text = "'''This logo contains " .. rd .. ".'''"
                }
            }
            if ts ~= nil then
                rd = jumpscareBanner
            else
                rd = frame:expandTemplate {
                    title = "ambox",
                    args = {
                        small = "left",
                        type = "content",
                        nocat = "yes",
                        image = "[[File:Avid-jumpscare-ace.png|50px|link=]]",
                        style = "margin:auto;max-width:480px;width:inherit;background:#f8f9fa;border: 0px solid #a2a9b1;border-left: 15px solid #da0c3f;padding: 10px 0 10px 0.5em;",
                        text = "'''This logo contains " .. rd .. ".'''"
                    }
                }
            end
        elseif string.find(frame.args[1], "flashing") then
            local flashingBanner = frame:expandTemplate {
                title = "ambox",
                args = {
                    small = "left",
                    type = "content",
                    nocat = "yes",
                    image = "[[File:Avid-flashing-vivi.png|50px|link=]]",
                    style = "margin:auto;max-width:480px;width:inherit;background:#f8f9fa;border: 0px solid #a2a9b1;border-left: 15px solid #da0c3f;padding: 10px 0 10px 0.5em;",
                    text = "'''This logo contains " .. rd .. ".'''"
                }
            }
            if ts ~= nil then
                rd = flashingBanner
            else
                rd = frame:expandTemplate {
                    title = "ambox",
                    args = {
                        small = "left",
                        type = "content",
                        nocat = "yes",
                        image = "[[File:Avid-flashing-vivi.png|50px|link=]]",
                        style = "margin:auto;max-width:480px;width:inherit;background:#f8f9fa;border: 0px solid #a2a9b1;border-left: 15px solid #da0c3f;padding: 10px 0 10px 0.5em;",
                        text = "'''This logo contains " .. rd .. ".'''"
                    }
                }
            end
        end
    end
    if string.find(frame.args[1], "audio") then
        if rd ~= nil then
            rd = rd .. b[1]
        else
            rd = b[1]
        end
    end
    if string.find(frame.args[1], "phone") then
        if rd ~= nil then
            rd = rd .. b[2]
        else
            rd = b[2]
        end
    end
    return rd
end

return p
Cookies help us deliver our services. By using our services, you agree to our use of cookies.