Module:Guidance: Difference between revisions
Jump to navigation
Jump to search
imported>Pingu (Created page with "local p = {} --p stands for package function p.reasons(frame) rs = {} rs[1] = "graphic violence or gore"; rs[2] = "flashing images"; rs[3] = "jump scares"; rs[4] = "sexual content"; rv = {}; rv[1] = "flashing" rv[2] = "graphic" rv[3] = "jumpscare" rv[4] = "sexual" for i = 4,1,-1 do if string.find(frame.args[1], rv[i]) then if ro == nil then ro = rs[i] elseif string.find(ro,",...") |
imported>Compooper No edit summary |
||
| (39 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
local p = {} --p stands for package | 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) | 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 | end | ||
return p | return p | ||
Latest revision as of 00:16, 7 January 2024
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