Module:Sandbox/Trig Jegman/File

From Pikmin Fanon
Revision as of 03:48, 10 July 2023 by Trig Jegman (talk | contribs) (& domestic change box art images -> box art; removed card type; deprecated unnecessary meta parameter)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 user = frame:getParent().args["user"] or ""
	local source = frame:getParent().args["source"] or nil
	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 artwork = "Artwork"
		local conceptart = "Concept artwork"
        local audio = "Audio"
		local animated = "Animated image"
		local boxart = "Box artwork"
		local control = "Controller button"
		local diagram = "Diagram"
        local flag = "Flag"
		local icon = "Icon"
        local joke = "Joke image"
		local logo = "Logo"
        local location = "Location"
		local map = "Map"
		local model = "Model"
		local merch = "Merchandise"
		local photo = "Real-world photo"
		local rating = "Rating icon"
		local render = "Render"
		local texture = "Texture"
		local scan = "Scan"
		local screenshot = "Screenshot"
		local sprite = "Sprite"
		local system = "Console images"
		local user = "This file is a personal file belonging to [[User:".. user .."|".. user .."]]."
		local video = "Video"
		local wiki = "Pikmin Fanon 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 = {
			['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,

			['audio'] = audio,
			['sound'] = audio,
			['voice clip'] = audio,
			['voice'] = audio,
			
			['box'] = boxart,
			['boxart'] = boxart,
			['boxartwork'] = boxart,
			['box art'] = boxart,
			['box artwork'] = boxart,

			['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,

			['diagram'] = diagram,
			['graph'] = diagram,
			['graphs'] = diagram,
			['chart'] = diagram,
            
            ['flag'] = flag,
			
			['ico'] = icon,
			['icon'] = icon,
			['icons'] = icon,

			['joke'] = joke,
			
			['logo'] = logo,
			['logomark'] = logo,
			['logos'] = logo,
			['logotype'] = logo,
			['wordmark'] = logo,

			['location'] = location,
			['place'] = location,

			['map'] = map,
			['maps'] = map,

            ['main'] = main,
            ['mainimage'] = mainimage,
            ['mainimages'] = mainimage,
			
			['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,
			['real'] = photo,
			
			['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,

			['texture'] = texture,
			
			['pixelart'] = sprite,
			['pixel art'] = sprite,
			['sprite'] = sprite,
			['sprites'] = sprite,

			['scan'] = scan,
			['scanned'] = scan,
			['scans'] = scan,
			
			['sys'] = system,
			['system'] = system,
			['system image'] = system,
			['system images'] = system,
			['console'] = system,

			['personal'] = user,
			['personal img'] = user,
			['personal image'] = user,
			['user'] = user,
			['userimg'] = user,
			['user image'] = user,
			
			['video'] = video,
			['videos'] = video,
			
			['pikminfanon'] = wiki,
			['pikmin fanon'] = wiki,
			['wiki'] = wiki,
		    }
		
		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 artwork = "[[Category:Artwork]]"
		local animated = "[[Category:Animated images]]"
		local audio = "[[Category:Audio]]"
		local boxart = "[[Category:Box art]]"
		local control = "[[Category:Controller icons]]"
        local conceptart = "[[Category:Concept art]]"
		local diagram = "[[Category:Diagrams]]"
		local icon = "[[Category:Icons]]"
		local joke = "[[Category:Joke images]]"
		local flag = "[[Category:Flags]]"
		local logo = "[[Category:Logos]]"
        local location = "[[Category:Location images]]"
		local mainimage = "[[Category:Images]]"
		local map = "[[Category:Maps]]"
		local model = "[[Category:Models]]"
		local merch = "[[Category:Merchandise photos]]"
		local photo = "[[Category:Real-world images]]"
		local rating = "[[Category:Rating icons]]"
		local scan = "[[Category:Scans]]"
		local screenshot = "[[Category:Screenshots]]"
		local sprite = "[[Category:Pixel art]]"
		local system = "[[Category:Consoles]]"
		local render = "[[Category:3D rendered images]]"
		local texture = "[[Category:Textures]]"
		local user = "[[Category:User images]]"
		local video = "[[Category:Videos]]"
		local wiki = "[[Category:Wiki images]]"
		local none = "[[Category:Files with invalid types]]"
		
		local t = {}
		t = {
			['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,

			['audio'] = audio,
			['sound'] = audio,
			['voice clip'] = audio,
			['voice'] = audio,
			
			['box'] = boxart,
			['boxart'] = boxart,
			['boxartwork'] = boxart,
			['box art'] = boxart,
			['box artwork'] = boxart,

			['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,

			['diagram'] = diagram,
			['graph'] = diagram,
			['graphs'] = diagram,
			['chart'] = diagram,
            
            ['flag'] = flag,
			
			['ico'] = icon,
			['icon'] = icon,
			['icons'] = icon,

			['joke'] = joke,
			
			['logo'] = logo,
			['logomark'] = logo,
			['logos'] = logo,
			['logotype'] = logo,
			['wordmark'] = logo,

			['location'] = location,
			['place'] = location,

			['map'] = map,
			['maps'] = map,

            ['main'] = main,
            ['mainimage'] = mainimage,
            ['mainimages'] = mainimage,
			
			['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,
			['real'] = photo,
			
			['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,

			['texture'] = texture,
			
			['pixelart'] = sprite,
			['pixel art'] = sprite,
			['sprite'] = sprite,
			['sprites'] = sprite,

			['scan'] = scan,
			['scanned'] = scan,
			['scans'] = scan,
			
			['sys'] = system,
			['system'] = system,
			['system image'] = system,
			['system images'] = system,
			['console'] = system,

			['personal'] = user,
			['personal img'] = user,
			['personal image'] = user,
			['user'] = user,
			['userimg'] = user,
			['user image'] = user,
			
			['video'] = video,
			['videos'] = video,
			
			['pikminfanon'] = wiki,
			['pikmin fanon'] = wiki,
			['wiki'] = wiki,
		}

		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 prima = "This file has been taken from a Prima guide. [[Category:Prima source files]]"
        local nso = "This file has been taken from Nintendo Switch Online. [[Category:Nintendo Switch Online source files]]"
		
		local t = {}
		t = {
			['me'] = myself,
			['my'] = myself,
			['myself'] = myself,
			['self'] = myself,
			['Me'] = myself,
			['My'] = myself,
			['Myself'] = myself,
			['Self'] = myself,

			['other'] = user2,
			['someone'] = user2,
			['someone else'] = user2,
			['user'] = user2,
			['Other'] = user2,
			['Someone'] = user2,
			['Someone else'] = user2,
			['User'] = user2,
			
			['gamepedia'] = fandom,
			['fandom'] = fandom,
			['wikia'] = fandom,
			['gamefaqs'] = fandom,
			['Gamepedia'] = fandom,
			['Fandom'] = fandom,
			['Wikia'] = fandom,
			['Gamefaqs'] = fandom,
			['GameFAQs'] = fandom,
			
			['youtube'] = youtube,
			['yt'] = youtube,
			['Youtube'] = youtube,
			['YT'] = youtube,
			['YouTube'] = youtube,
			
			['kit'] = presskit,
			['press'] = presskit,
			['presskit'] = presskit,
			['press kit'] = presskit,
			['Kit'] = presskit,
			['Press'] = presskit,
			['Presskit'] = presskit,
			['Press kit'] = presskit,

            ['Prima Official Starter Guide'] = prima,
            ['Prima Guide'] = prima,
            ['Prima guide'] = prima,
            ['prima guide'] = prima,
            ['Prima Games'] = prima,
            ['Prima games'] = prima,
            ['prima games'] = prima,
            ['prima official starter guide'] = prima,
            ['Prima'] = prima,
            ['prima'] = prima,

            ['nso'] = nso,
            ['NSO'] = nso,
            ['Switch Online'] = nso,
            ['Online'] = nso,
            ['Nintendo Switch Online'] = nso,
            ['switch online'] = nso,
            ['online'] = nso,
            ['nintendo switch online'] = nso,

		}
		
		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 [[PikminFanon:Copyrights|copyright]]. Copyright is most likely held by the company that published the game or the media portrayed. Pikmin Fanon'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 = ""

	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
	
	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_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 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_user .. panel_source .. panel_resized .. panel_youtube .. panel_fandom .. panel_license ..'</table>'
	
	table.insert(result, panel)
	return table.concat(result, "")
end

return f