Module:Guidance

local p = {} --p stands for package

r = { --keyword, short name, formatted name, severity { "flashing", "flashing images", "flashing images", 1 }, { "graphic", "graphic violence", "graphic violence or gore", 2 }, { "jumpscare", "a jump scare", "a 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 = "" else rc = rc .. ""           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 = "", 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 = "", 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 = "", 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 = "", 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 = "", 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 = "", 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