Module:Sandbox/Trig Jegman/File
From Nookipedia, the Animal Crossing wiki
Documentation for this module may be created at Module:Sandbox/Trig Jegman/File/doc
local f = {}
function f.main(frame)
local result = {}
local game = frame:getParent().args["game"] or ""
local description = frame:getParent().args["description"] or ""
local type = mw.ustring.lower(frame:getParent().args["type"] or "")
local meta = mw.ustring.lower(frame:getParent().args["meta"] or "")
local user = frame:getParent().args["user"] or ""
local source = frame:getParent().args["source"] or nil
local edits = frame:getParent().args["edits"] or ""
local author = frame:getParent().args["author"] or ""
local otherversions = frame:getParent().args["other-versions"] or ""
local sourcefilename = frame:getParent().args["source-file-name"] or ""
local license = frame:getParent().args["license"] or nil
local resized = frame:getParent().args["resized"] or nil
local youtube = frame:getParent().args["youtube"] or nil
local fandom = frame:getParent().args["fandom"] or nil
function TEXT(X)
local amiibo = "Amiibo"
local artwork = "Artwork"
local audio = "Audio"
local animated = "Animated image"
local music = "Music"
local boxart = "Box artwork"
local brandlogo = "Brand logo"
local control = "Controller button"
local controllerphoto = "Controller photo"
local conceptart = "Concept artwork"
local characterrender = "Character render"
local characterart = "Character artwork"
local clothingicon = "Clothing icon"
local creditsartwork = "Credits artwork"
local diagram = "Diagram"
local flag = "Flag"
local icon = "Icon"
local logo = "Logo"
local map = "Map"
local miiverse = "Miiverse post"
local model = "Model"
local merch = "Merchandise"
local promotional = "Promotional image"
local promoshot = "Promotional screenshot"
local photo = "Real-world photo"
local prerelease = "Pre-release image"
local rating = "Rating icon"
local render = "Render"
local texture = "Texture"
local screenshot = "Screenshot"
local sprite = "Sprite"
local system = "System images"
local user = "This file is a personal file belonging to [[User:".. user .."]]."
local template = "Template image"
local video = "Video"
local wallpaper = "Wallpaper"
local wiki = "Nookipedia image"
local main = "Game image"
local mainimage = "Game image"
local none = "<span style='color: red'>Error: Invalid type entered, please</span> [[Module:File/doc|consult the list of types]]."
local t = {}
t = {
['amiibo'] = amiibo,
['2d'] = artwork,
['2dart'] = artwork,
['2d art'] = artwork,
['2d artwork'] = artwork,
['art'] = artwork,
['artwork'] = artwork,
['art work'] = artwork,
['3d'] = render,
['3dart'] = render,
['3d art'] = render,
['3d artwork'] = render,
['render'] = render,
['rendering'] = render,
['anim'] = animated,
['animated'] = animated,
['animation'] = animated,
['animated image'] = animated,
['animated images'] = animated,
['animated img'] = animated,
['gif'] = animated,
['music'] = music,
['song'] = music,
['songs'] = music,
['audio'] = audio,
['sound'] = audio,
['voice clip'] = audio,
['voice'] = audio,
['box'] = boxart,
['boxart'] = boxart,
['boxartwork'] = boxart,
['box art'] = boxart,
['box artwork'] = boxart,
['brandlogo'] = brandlogo,
['brand logo'] = brandlogo,
['bl'] = brandlogo,
['conceptart'] = conceptart,
['conceptartwork'] = conceptart,
['concept art'] = conceptart,
['concept artwork'] = conceptart,
['early art'] = conceptart,
['early artwork'] = conceptart,
['earlyart'] = conceptart,
['earlyartwork'] = conceptart,
['button'] = control,
['buttons'] = control,
['control'] = control,
['controller'] = control,
['controller button'] = control,
['joystick'] = control,
['controllerphoto'] = controllerphoto,
['controller photo'] = controllerphoto,
['controlphoto'] = controllerphoto,
['control photo'] = controllerphoto,
['characterrender'] = characterrender,
['character render'] = characterrender,
['cr'] = characterrender,
['characterart'] = characterart,
['characterartwork'] = characterart,
['character art'] = characterart,
['character artwork'] = characterart,
['charart'] = characterart,
['clothingicon'] = clothingicon,
['clothing icon'] = clothingicon,
['ci'] = clothingicon,
['creditsartwork'] = creditsartwork,
['creditsart'] = creditsartwork,
['credits artwork'] = creditsartwork,
['credits art'] = creditsartwork,
['credart'] = creditsartwork,
['diagram'] = diagram,
['graph'] = diagram,
['graphs'] = diagram,
['chart'] = diagram,
['flag'] = flag,
['ico'] = icon,
['icon'] = icon,
['icons'] = icon,
['logo'] = logo,
['logomark'] = logo,
['logos'] = logo,
['logotype'] = logo,
['wordmark'] = logo,
['language'] = language,
['lang'] = language,
['map'] = map,
['maps'] = map,
['miiverse'] = miiverse,
['main'] = main,
['mainimage'] = mainimage,
['mainimages'] = mainimage,
['line'] = line,
['LINE'] = line,
['line sticker'] = line,
['3dmodel'] = model,
['3d model'] = model,
['model'] = model,
['models'] = model,
['merch'] = merch,
['merchandise'] = merch,
['toy'] = merch,
['photo'] = photo,
['photos'] = photo,
['photography'] = photo,
['reallife'] = photo,
['real life'] = photo,
['promotional'] = promotional,
['promo'] = promotional,
['advertisement'] = promotional,
['ad'] = promotional,
['promoshot'] = promoshot,
['promotional screenshot'] = promoshot,
['promo screenshot'] = promoshot,
['prerelease'] = prerelease,
['pre-release'] = prerelease,
['p-r'] = prerelease,
['beta'] = prerelease,
['cero'] = rating,
['esrb'] = rating,
['pegi'] = rating,
['rating'] = rating,
['ratings'] = rating,
['prtscr'] = screenshot,
['printscreen'] = screenshot,
['print screen'] = screenshot,
['scr'] = screenshot,
['screen'] = screenshot,
['screenshot'] = screenshot,
['scrshot'] = screenshot,
['screen shot'] = screenshot,
['template'] = template,
['texture'] = texture,
['pixelart'] = sprite,
['pixel art'] = sprite,
['sprite'] = sprite,
['sprites'] = sprite,
['sys'] = system,
['sysimg'] = system,
['system'] = system,
['system image'] = system,
['system images'] = system,
['personal'] = user,
['personal img'] = user,
['personal image'] = user,
['user'] = user,
['userimg'] = user,
['user image'] = user,
['video'] = video,
['videos'] = video,
['nookipedia'] = wiki,
['wiki'] = wiki,
['wallpaper'] = wallpaper,
['wall paper'] = wallpaper,
['screensaver'] = wallpaper,
['background'] = wallpaper,
}
if not t[X]
then return none
else return t[X]
end
end
function CAT(X,Y)
if Y == true then Y = game .. ' ' else Y = "" end
local amiibo = "[[Category:".. Y .."Amiibo]]"
local artwork = "[[Category:".. Y .."artwork]]"
local animated = "[[Category:".. Y .."animated images]]"
local music = "[[Category:".. Y .."music]]"
local audio = "[[Category:".. Y .."audio]]"
local boxart = "[[Category:".. Y .."box artwork]]"
local brandlogo = "[[Category:".. Y .."brand logos]]"
local control = "[[Category:".. Y .."controller icons]]"
local controllerphoto = "[[Category:".. Y .."Controller photos]]"
local conceptart = "[[Category:".. Y .."concept artwork]]"
local characterrender = "[[Category:".. Y .."character renders]]"
local characterart = "[[Category:".. Y .."character artwork]]"
local creditsartwork = "[[Category:".. Y .."credits artwork]]"
local diagram = "[[Category:".. Y .."diagrams]]"
local icon = "[[Category:".. Y .."icons]]"
local flag = "[[Category:".. Y .."flags]]"
local logo = "[[Category:".. Y .."logos]]"
local line = "[[Category:".. Y .."LINE stickers]]"
local main = "[[Category:".. Y .."]]"
local mainimage = "[[Category:".. Y .."images]]"
local miiverse = "[[Category:".. Y .."Miiverse post]]"
local map = "[[Category:".. Y .."maps]]"
local model = "[[Category:".. Y .."models]]"
local merch = "[[Category:".. Y .."merchandise photos]]"
local promotional = "[[Category:".. Y .."promotional images]]"
local promoshot = "[[Category:".. Y .."promotional screenshots]]"
local prerelease = "[[Category:".. Y .."pre-release images]]"
local photo = "[[Category:".. Y .."real life images]]"
local rating = "[[Category:".. Y .."rating icons]]"
local screenshot = "[[Category:".. Y .."screenshots]]"
local sprite = "[[Category:".. Y .."sprites]]"
local system = "[[Category:".. Y .."system images]]"
local render = "[[Category:".. Y .."renders]]"
local texture = "[[Category:".. Y .."textures]]"
local user = "[[Category:".. Y .."User images]]"
local template = "[[Category:".. Y .."Template images]]"
local video = "[[Category:".. Y .."videos]]"
local wiki = "[[Category:".. Y .."Nookipedia images]]"
local wallpaper = "[[Category:".. Y .."wallpapers]]"
local none = "[[Category:Files with invalid types]]"
local t = {}
t = {
['amiibo'] = amiibo,
['2d'] = artwork,
['2dart'] = artwork,
['2d art'] = artwork,
['2d artwork'] = artwork,
['art'] = artwork,
['artwork'] = artwork,
['art work'] = artwork,
['3d'] = render,
['3dart'] = render,
['3d art'] = render,
['3d artwork'] = render,
['render'] = render,
['rendering'] = render,
['alternalog'] = alternalog,
['alterna log'] = alternalog,
['al'] = alternalog,
['anim'] = animated,
['animated'] = animated,
['animation'] = animated,
['animated image'] = animated,
['animated images'] = animated,
['animated img'] = animated,
['gif'] = animated,
['music'] = music,
['song'] = music,
['songs'] = music,
['audio'] = audio,
['sound'] = audio,
['voice clip'] = audio,
['voice'] = audio,
['flag'] = flag,
['box'] = boxart,
['boxart'] = boxart,
['boxartwork'] = boxart,
['box art'] = boxart,
['box artwork'] = boxart,
['brandlogo'] = brandlogo,
['brand logo'] = brandlogo,
['bl'] = brandlogo,
['conceptart'] = conceptart,
['conceptartwork'] = conceptart,
['concept art'] = conceptart,
['concept artwork'] = conceptart,
['early art'] = conceptart,
['early artwork'] = conceptart,
['earlyart'] = conceptart,
['earlyartwork'] = conceptart,
['button'] = control,
['buttons'] = control,
['control'] = control,
['controller'] = control,
['controller button'] = control,
['joystick'] = control,
['controllerphoto'] = controllerphoto,
['controller photo'] = controllerphoto,
['controlphoto'] = controllerphoto,
['control photo'] = controllerphoto,
['characterrender'] = characterrender,
['character render'] = characterrender,
['cr'] = characterrender,
['characterart'] = characterart,
['characterartwork'] = characterart,
['character art'] = characterart,
['character artwork'] = characterart,
['charart'] = characterart,
['clothingicon'] = clothingicon,
['clothing icon'] = clothingicon,
['ci'] = clothingicon,
['creditsartwork'] = creditsartwork,
['creditsart'] = creditsartwork,
['credits artwork'] = creditsartwork,
['credits art'] = creditsartwork,
['credart'] = creditsartwork,
['diagram'] = diagram,
['graph'] = diagram,
['graphs'] = diagram,
['chart'] = diagram,
['ico'] = icon,
['icon'] = icon,
['icons'] = icons,
['logo'] = logo,
['logomark'] = logo,
['logos'] = logo,
['logotype'] = logo,
['wordmark'] = logo,
['map'] = map,
['maps'] = map,
['lockericon'] = lockericon,
['locker icon'] = lockericon,
['locker'] = lockericon,
['miiverse'] = miiverse,
['main'] = main,
['mainimage'] = mainimage,
['mainimages'] = mainimage,
['line'] = line,
['LINE'] = line,
['line sticker'] = line,
['3dmodel'] = model,
['3d model'] = model,
['model'] = model,
['models'] = model,
['merch'] = merch,
['merchandise'] = merch,
['toy'] = merch,
['photo'] = photo,
['photos'] = photo,
['photography'] = photo,
['reallife'] = photo,
['real life'] = photo,
['promotional'] = promotional,
['promo'] = promotional,
['advertisement'] = promotional,
['ad'] = promotional,
['promoshot'] = promoshot,
['promotional screenshot'] = promoshot,
['promo screenshot'] = promoshot,
['prerelease'] = prerelease,
['pre-release'] = prerelease,
['p-r'] = prerelease,
['beta'] = prerelease,
['cero'] = rating,
['esrb'] = rating,
['pegi'] = rating,
['rating'] = rating,
['ratings'] = rating,
['prtscr'] = screenshot,
['printscreen'] = screenshot,
['print screen'] = screenshot,
['scr'] = screenshot,
['screen'] = screenshot,
['screenshot'] = screenshot,
['scrshot'] = screenshot,
['screen shot'] = screenshot,
['pixelart'] = sprite,
['pixel art'] = sprite,
['sprite'] = sprite,
['sprites'] = sprite,
['sys'] = system,
['sysimg'] = system,
['system'] = system,
['system image'] = system,
['system images'] = system,
['template'] = template,
['texture'] = texture,
['personal'] = user,
['personal img'] = user,
['personal image'] = user,
['user'] = user,
['userimg'] = user,
['user image'] = user,
['video'] = video,
['videos'] = video,
['nookipedia'] = wiki,
['wiki'] = wiki,
['wallpaper'] = wallpaper,
['wall paper'] = wallpaper,
['screensaver'] = wallpaper,
['background'] = wallpaper,
}
if not t[X]
then return none
else return t[X]
end
end
function SRC(X)
local myself = "Media created by the uploader"
local user2 = "Media created by [[user:".. user .."|".. user .."]]"
local fandom = "FANDOM image [[Category:FANDOM sourced images]]"
local youtube = "YouTube image [[Category:YouTube sourced images]]"
local presskit = "Press kit image [[Category:Non-public press kit images]]"
local missing = "<span style='color: red'>''This file is missing a source.''</span>[[Category:Missing source]]"
local t = {}
t = {
['me'] = myself,
['my'] = myself,
['myself'] = myself,
['self'] = myself,
['other'] = user2,
['someone'] = user2,
['someone else'] = user2,
['user'] = user2,
['gamepedia'] = fandom,
['fandom'] = fandom,
['wikia'] = fandom,
['youtube'] = youtube,
['yt'] = youtube,
['kit'] = presskit,
['press'] = presskit,
['presskit'] = presskit,
['press kit'] = presskit,
}
if source and source ~= "" then
if not t[X] then
return X
else return t[X]
end
else return missing
end
end
function LIC(X)
local ccbysa10 = "''This file is distributed under the '''[https://creativecommons.org/licenses/by-sa/1.0/deed.en Creative Commons Attribution-ShareAlike 1.0]''' license.''[[Category:Media licensed under CC BY-SA 1.0]]"
local ccby20 = "''This file is distributed under the '''[https://creativecommons.org/licenses/by/2.0/deed.en Creative Commons Attribution 2.0]''' license.''[[Category:Media licensed under CC BY-SA 2.0]]"
local ccbysa21jp = "''This file is distributed under the '''[https://creativecommons.org/licenses/by-sa/2.1/jp/deed.en Creative Commons Attribution-ShareAlike 2.1 Japan]''' license.''[[Category:Media licensed under CC BY-SA 2.1]]"
local ccby25 = "''This file is distributed under the '''[http://creativecommons.org/licenses/by/2.5/deed.en Creative Commons Attribution 2.5]''' license.''[[Category:Media licensed under CC BY 2.5]]"
local ccbysa25 = "''This file is distributed under the '''[https://creativecommons.org/licenses/by-sa/2.5/deed.en Creative Commons Attribution-ShareAlike 2.5]''' license.''[[Category:Media licensed under CC BY-SA 2.5]]"
local ccby30 = "''This file is distributed under the '''[https://creativecommons.org/licenses/by/3.0/deed.en Creative Commons Attribution 3.0]''' license.''[[Category:Media licensed under CC BY 3.0]]"
local ccbync30 = "''This file is distributed under the '''[https://creativecommons.org/licenses/by-nc/3.0/ Creative Commons Attribution Non-Commercial 3.0]''' license.''[[Category:Media licensed under CC BY-NC 3.0]]"
local ccbysa30 = "''This file is distributed under the '''[https://creativecommons.org/licenses/by-sa/3.0/deed.en Creative Commons Attribution-ShareAlike 3.0]''' license.''[[Category:Media licensed under CC BY-SA 3.0]]"
local ccbysa40 = "''This file is distributed under the '''[https://creativecommons.org/licenses/by-sa/4.0/deed.en Creative Commons Attribution-ShareAlike 4.0]''' license.''[[Category:Media licensed under CC BY-SA 4.0]]"
local lgpl = "This library is free software; you can redistribute it and/or modify it under the terms of the '''[[wikipedia:GNU Lesser General Public License|GNU Lesser General Public License]]''' as published by the [[wikipedia:Free Software Foundation|Free Software Foundation]]; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See [http://www.gnu.org/licenses/lgpl.html the GNU Lesser General Public License] for more details."
local pd = "''This file has been released into the '''[[Wikipedia:Public domain|public domain]]''' by the copyright holder, its copyright has expired, or it is ineligible for copyright. This applies worldwide.''[[Category:Media released to public domain]]"
local pds = "''This file has been released into the '''[[Wikipedia:Public domain|public domain]]''' by the uploading user. This applies worldwide.''[[Category:Media released to public domain]]"
local fairuse = "''This file is subject to [[Nookipedia:Privacy policy|copyright]]. Copyright is most likely held by the company that published the game or the media portrayed. Nookipedia's use of this work qualifies as '''fair use''' under '''[[Wikipedia:Fair use#U.S. fair use factors|United States copyright law]]''', or the author's permission is given. It is used on the wiki only in the belief that the information the file portrays is designed to be an accompaniment to playing the game or media, and its use here will not:''<ol><li>''Detract from the experience of playing the game or using the media in question.''</li><li>''Harm the author's sales or reputation.''</li></ol>[[Category:Media assumed fair use]]"
local t = {}
t = {
['ccbysa10'] = ccbysa10,
['ccybysa1.0'] = ccbysa10,
['cc by sa 1.0'] = ccbysa10,
['cc-by-sa-1.0'] = ccbysa10,
['cc-by-sa 1.0'] = ccbysa10,
['ccby20'] = ccby20,
['ccyby2.0'] = ccby20,
['cc by 2.0'] = ccby20,
['cc-by-2.0'] = ccby20,
['cc-by 2.0'] = ccby20,
['ccbysa21jp'] = ccbysa21jp,
['ccybysa2.1jp'] = ccbysa21jp,
['cc by sa 2.1 jp'] = ccbysa21jp,
['cc-by-sa-2.1 jp'] = ccbysa21jp,
['cc-by-sa 2.1 jp'] = ccbysa21jp,
['cc-by-sa 2.1 japan'] = ccbysa21jp,
['ccby25'] = ccby25,
['ccyby2.5'] = ccby25,
['cc by 2.5'] = ccby25,
['cc-by-2.5'] = ccby25,
['cc-by-2.5'] = ccby25,
['ccbysa25'] = ccbysa25,
['ccybysa2.5'] = ccbysa25,
['cc by sa 2.5'] = ccbysa25,
['cc-by-sa-2.5'] = ccbysa25,
['cc-by-sa 2.5'] = ccbysa25,
['ccby30'] = ccbysa30,
['ccyby3.0'] = ccby30,
['cc by 3.0'] = ccby30,
['cc-by-3.0'] = ccby30,
['cc-by-3.0'] = ccby30,
['ccbysa30'] = ccbysa30,
['ccybysa3.0'] = ccbysa30,
['cc by sa 3.0'] = ccbysa30,
['cc-by-sa-3.0'] = ccbysa30,
['cc-by-sa 3.0'] = ccbysa30,
['ccbync30'] = ccbync30,
['ccybync3.0'] = ccbync30,
['cc by nc 3.0'] = ccbync30,
['cc-by-nc-3.0'] = ccbync30,
['cc-by-nc 3.0'] = ccbync30,
['ccbysa40'] = ccbysa40,
['ccybysa4.0'] = ccbysa40,
['cc by sa 4.0'] = ccbysa40,
['cc-by-sa-4.0'] = ccbysa40,
['cc-by-sa 4.0'] = ccbysa40,
['pd'] = pd,
['public'] = pd,
['publicdomain'] = pd,
['public domain'] = pd,
['lgpl'] = lgpl,
['GNU Lesser'] = lgpl,
['pds'] = pds,
['publicself'] = pds,
['publicdomain self'] = pds,
['public domain self'] = pds,
['public domain by myself'] = pds,
}
if not t[X]
then return fairuse
else return t[X]
end
end
local panel_type = ""
local panel_meta = ""
if not type or type == ""
then type = {}
else
type = mw.text.split(type, ',%s*')
for i = 1, #type do
type[i] = TEXT(type[i]) .. CAT(type[i],true)
end
if #type > 4
then panel_type = '<tr><th>Type(s)</th><td style="color: red">Way too many types!<br />Try using up to 4 types max.</td></tr>'
else panel_type = '<tr><th>Type(s)</th><td>'.. table.concat(type,", ") ..'</td></tr>'
end
end
if not meta or meta == ""
then meta = {}
else
meta = mw.text.split(meta, ',%s*')
for i = 1, #meta do
meta[i] = TEXT(meta[i]) .. CAT(meta[i],false)
end
if #meta > 4
then panel_meta = '<tr><th>Meta Type(s)</th><td style="color: red">Way too many types!<br />Try using up to 4 types max.</td></tr>'
else panel_meta = '<tr><th>Meta Type(s)</th><td>'.. table.concat(meta,", ") ..'</td></tr>'
end
end
local panel_game = '<tr><th>Game</th><td>[['.. game ..']]</td></tr>'
local panel_description = '<tr><th>Description</th><td>'.. description ..'</td></tr>'
local panel_user = '<tr><th>User</th><td>[[user:'.. user ..'|'.. user ..']]</td></tr>'
local panel_source = '<tr><th>Source</th><td>'.. SRC(source) ..'</td></tr>'
local panel_edits = '<tr><th>Edits</th><td>'.. edits ..'</td></tr>'
local panel_author = '<tr><th>Author</th><td>'.. author ..'</td></tr>'
local panel_otherversions = '<tr><th>Other versions</th><td>'.. otherversions ..'</td></tr>'
local panel_sourcefilename = '<tr><th>Source file name</th><td>'.. sourcefilename ..'</td></tr>'
local panel_license = '<tr><th>License</th><td>'.. LIC(license) ..'</td></tr>'
local panel_resized = '<tr><th>Resized</th><td>This file has been resized.[[Category:Resized files]]</td></tr>'
local panel_youtube = '<tr><th>YouTube</th><td>This file has been taken from YouTube, and should be re-captured in-game when possible.[[Category:YouTube sourced images]]</td></tr>'
local panel_fandom = '<tr><th>FANDOM</th><td>This file has been taken from FANDOM (or a subsidiary), and should be re-captured as soon as possible.[[Category:FANDOM sourced images]]</td></tr>'
if game == "" then panel_game = "" end
if user == "" then panel_user = "" end
if edits == "" then panel_edits = "" end
if author == "" then panel_author = "" end
if otherversions == "" then panel_otherversions = "" end
if sourcefilename == "" then panel_sourcefilename = "" end
if resized ~= "yes" then panel_resized = "" end
if youtube ~= "yes" then panel_youtube = "" end
if fandom ~= "yes" then panel_fandom = "" end
if description == "" or description == nil then
panel_description = "[[Category:Files without a description]]"
end
local panel = '<table class="wikitable" style="width: 100%"><tr><th colspan="2">File information</th></tr>'.. panel_game .. panel_description .. panel_type .. panel_meta .. panel_user .. panel_author .. panel_source .. panel_edits .. panel_resized .. panel_otherversions .. panel_sourcefilename .. panel_youtube .. panel_fandom .. panel_license ..'</table>'
table.insert(result, panel)
return table.concat(result, "")
end
return f