Module:Fileinfo: Difference between revisions

From Japari Library, the Kemono Friends Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(2 intermediate revisions by the same user not shown)
Line 219: Line 219:
--artOutput: The final output sent to the return output line. Includes the new line and header cell and encapsulates artLinks. artOutput
--artOutput: The final output sent to the return output line. Includes the new line and header cell and encapsulates artLinks. artOutput
if media ~= '' then
if media ~= '' and media ~= 'none' then
local getLink = require('Module:Data/Media')
local getLink = require('Module:Data/Media')
if mw.title.makeTitle('Module', 'Data/Media' .. '/raw').exists == true then
if mw.title.makeTitle('Module', 'Data/Media' .. '/raw').exists == true then
Line 226: Line 226:
local link = getLink.media[media]
local link = getLink.media[media]
if getLinkRaw and getLinkRaw.media[media] and media == 'sh' or media == 'dsrk' then
if getLinkRaw and getLinkRaw.media[media] then
link = "\n!Origin\n|[[" .. getLink.media[media] .. "|''" .. getLinkRaw.media[media] .. "'' (Series)]]" .. "\n|-"
elseif getLinkRaw and getLinkRaw.media[media] then
link = "\n!Origin\n|''[[" .. getLink.media[media] .. "|" .. getLinkRaw.media[media] .. "]]''" .. "\n|-"
link = "\n!Origin\n|''[[" .. getLink.media[media] .. "|" .. getLinkRaw.media[media] .. "]]''" .. "\n|-"
else
else
if link:sub(-1) == ')' and mediatype == 'series' and media ~= 'mtf' then
if link:sub(-1) == ')' then
link = "\n!Origin\n|[[" .. getLink.media[media] .. "|''" .. string.sub(link,1,string.find(link, '%(') - 2) .. "'' (Series)]]\n|-"
elseif link:sub(-1) == ')' then
link = "\n!Origin\n|[[" .. getLink.media[media] .. "|''" .. string.sub(link,1,string.find(link, '%(') - 2) .. "'' " .. string.sub(link,string.find(link, '%('),string.find(link, '%)')) .. "]]\n|-"
link = "\n!Origin\n|[[" .. getLink.media[media] .. "|''" .. string.sub(link,1,string.find(link, '%(') - 2) .. "'' " .. string.sub(link,string.find(link, '%('),string.find(link, '%)')) .. "]]\n|-"
else
else
Line 243: Line 239:
if typemissing == true then
if typemissing == true then
if media == 'sh' or media == 'dsrk' then
category = '[[Category:' .. getLink.media[media] .. " Files]]"
category = '[[Category:' .. getLinkRaw.media[media] .. " (Series) Files]]"
elseif mediatype == 'crossover' then
category = '[[Category:' .. getLinkRaw.media[media] .. " Files]]"
else
category = '[[Category:' .. getLink.media[media] .. " Files]]"
end
else
else
if media == 'sh' or media == 'dsrk' then
category = '[[Category:' .. getLink.media[media] .. " Files]]"
category = '[[Category:' .. getLinkRaw.media[media] .. " (Series) Files]]"
categorytype = "[[Category:" .. getLink.media[media] .. filecat[trim(args['type']:lower())].cattext .. "]]"
categorytype = "[[Category:" .. getLinkRaw.media[media] .. " (Series)" .. filecat[trim(args['type']:lower())].cattext .. "]]"
elseif mediatype == 'crossover' then
category = '[[Category:' .. getLinkRaw.media[media] .. " Files]]"
categorytype = "[[Category:" .. getLinkRaw.media[media] .. filecat[trim(args['type']:lower())].cattext .. "]]"
else
category = '[[Category:' .. getLink.media[media] .. " Files]]"
categorytype = "[[Category:" .. getLink.media[media] .. filecat[trim(args['type']:lower())].cattext .. "]]"
end
end
end
Line 273: Line 255:
local output = '{| class="wikitable"' .. summary .. filetype .. source  .. artOutput .. link .. subject .. trademark .. license .. "\n|}" .. category .. categorytype
local output = '{| class="wikitable"' .. summary .. filetype .. source  .. artOutput .. link .. subject .. trademark .. license .. "\n|}" .. category .. categorytype
return output
return output
elseif media:lower() == 'none' then
local output = '{| class="wikitable"' .. summary .. filetype .. source .. artOutput .. subject .. trademark .. license .. "\n|}"
return output
else
else
local output = '{| class="wikitable"' .. summary .. filetype .. source .. artOutput .. subject .. trademark .. license .. "\n|}[[Category:Files with no associated media]]"
local output = '{| class="wikitable"' .. summary .. filetype .. source .. artOutput .. subject .. trademark .. license .. "\n|}[[Category:Files with no associated media]]"

Latest revision as of 14:16, 14 January 2025

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

--Adapted from Module:Fileinfo on Megami Tensei Wiki by Mistiryshak (Also the author of this Module)
local getArgument = require('Module:Arguments').getArgument

local p = {}

function capitalFirst(str) -- Allows capitalization of the first letter of each word in a string; adapted from (https://stackoverflow.com/questions/20284515/capitalize-first-letter-of-every-word-in-lua)
    return (str:gsub("(%l)(%w*)", function(a,b) return string.upper(a)..b end))
end

function trim(s) -- Allows removing of whitespace from inputs; adapted from (https://www.lua.org/manual/2.4/node32.html)
	local l = 1
	while string.sub(s,l,l) == ' ' do
	l = l+1
	end
	local r = string.len(s)
	while string.sub(s,r,r) == ' ' do
	r = r-1
	end
	return string.sub(s,l,r)
end

function p.Main(frame)
	local args = frame.args
	local summary = args['summary']
	local filetype = trim(args['type']:lower())
	local source = args['source']
	local media = trim(args['media']:lower())
	local license = trim(args['licensing']:lower())
	local subject = args['subject']
	local trademark = args['trademark']
	local artists = args['artists']
	local suppressCat = args['suppresscat']
	local suppressCatType = args['suppresscattype']
	
	local filecat = {
		['artwork'] = {
			displaytext = "[[:Category:Artwork|Artwork]] [[Category:Artwork]]",
			cattext = " Artwork"
			},
		['illustration'] = {
			displaytext = "[[:Category:Illustrations|Illustration]] [[Category:Illustrations]]",
			cattext = " Illustrations"
			},
		['render'] = {
			displaytext = '[[:Category:Renders|Render]] [[Category:Renders]]',
			cattext = ' Renders'
			},
		['logo'] = {
			displaytext = '[[:Category:Logos|Logo]] [[Category:Logos]]',
			cattext = " Logos"
			},
		['cover'] = {
			displaytext = '[[:Category:Covers|Cover]] [[Category:Covers]]',
			cattext = ' Covers'
			},
		['map'] = {
			displaytext = "[[:Category:Maps|Map]] [[Category:Maps]]",
			cattext = ' Maps'
			},
		['model'] = {
			displaytext = "[[:Category:Models|Model]] [[Category:Models]]",
			cattext = " Models"
			},
		['graphic'] = {
			displaytext = "[[:Category:Graphics|Graphic]] [[Category:Graphics]]",
			cattext = " Graphics"
			},
		['sprite'] = {
			displaytext = "[[:Category:Sprites|Sprite]] [[Category:Sprites]]",
			cattext = " Sprites"
			},
		['screenshot'] = {
			displaytext = "[[:Category:Screenshots|Screenshot]] [[Category:Screenshots]]",
			cattext = " Screenshots"
			},
		['card'] = { 
			displaytext = '[[:Category:Cards|Card]] [[Category:Cards]]',
			cattext = " Cards"
			},
		['icon'] = {
			displaytext = '[[:Category:Icons|Icon]] [[Category:Icons]]',
			cattext = " Icons"
			},
		['crop'] = {
			displaytext = '[[:Category:Cropped Images|Cropped Image]] [[Category:Cropped Images]]',
			cattext = " Cropped Images"
			},
		['photo'] = {
			displaytext = "[[:Category:Photos|Photo]] [[Category:Photos]]",
			cattext = " Photos"
			},
		['merchandise'] = {
			displaytext = "[[:Category:Merchandise Images|Merchandise]] [[Category:Merchandise Images]]",
			cattext = " Merchandise Images"
			},
		['audio'] = {
			displaytext = "[[:Category:Audio|Audio]] [[Category:Audio]]",
			cattext = " Audio"
			},
		['video'] = {
			displaytext = "[[:Category:Videos|Video]] [[Category:Videos]]",
			cattext = " Videos"
			},
		['wiki'] = {
			displaytext = "[[:Category:Wiki Images|Wiki Image]] [[Category:Wiki Images]]",
			cattext = " Wiki Images"
			},
		['flag'] = {
			displaytext = "[[:Category:Flags|Flag]] [[Category:Flags]]",
			cattext = " Flags"
			},
		['advertisement'] = {
			displaytext = "[[:Category:Advertisements|Advertisement]] [[Category:Advertisements]]",
			cattext = " Advertisements"
			},
		['other'] = {
			displaytext = "[[:Category:Other Images|Other Image]] [[Category:Other Images]]",
			cattext = " Other Images"
			}
	}
	
	if summary ~= '' then
		summary = "\n!Summary \n|" .. summary .. "\n|-"
	else
		summary = ''
	end
	
	if filetype ~= '' then
		filetype = "\n!Type \n|" .. filecat[filetype].displaytext .. "\n|-"
	else
		filetype = "\n!Type \n|''This file is missing a type. Please assign the correct type to the file.'' [[Category:Files missing type]]\n|-"
		typemissing = true
	end
	
	if source ~= '' then
		source = "\n!Source \n|" .. source .. "\n|-"
	else
		source = "\n!Source \n|''This file does not have a source. Please add the source, contact the original uploader, or upload a new version of the file.'' [[Category:Unsourced Files]]" .. "\n|-"
	end
	
	local licenselist = {
		['copyright'] = "Copyright",
		['public domain'] = "Public Domain",
		['gfdl'] = "GFDL",
		['cc by-sa'] = "CC BY-SA",
		['cc by-nc-sa'] = "CC BY-NC-SA"
	}
	
	if license == '' then
		license = "\n!Licensing\n|''This file is missing a license tag. Please assign the correct license tag to the file.'' [[Category:Files missing license tag]]" .. "\n|-"
	else
		license = "\n!Licensing\n|\n" .. frame:expandTemplate { title = licenselist[license] }  .. "\n|-"
	end
	
	if subject ~= '' then
		subject = "\n!Subject\n|" .. subject .. "\n|-"
	else
		subject = ''
	end
	
	if trademark ~= '' then
		trademark = "\n!Trademark\n|" .. trademark .. "\n|-"
	else
		trademark = ''
	end
	
			if artists ~= '' and artists:lower() ~= 'unknown' and string.find(artists, ':') ~= 7 then
			local Init = 0
			local staffBreak = true
			local artLinks = ''
			while staffBreak == true do
				stringEnd = string.find(artists, ',', Init)
					if stringEnd ~= nil then
						artSubst = trim(string.sub(artists, Init, stringEnd - 1))
							if mw.title.makeTitle(0, artSubst).redirectTarget ~= false then
								pagetitle = tostring(mw.title.makeTitle(0, artSubst).redirectTarget)
								artNew = "[[" .. pagetitle .. "]][[Category:Works by " .. pagetitle .. "]], "
								artLinks = artLinks .. artNew
							elseif mw.title.makeTitle(0, artSubst).exists == true then
								artNew = "[[" .. artSubst .. "]][[Category:Works by " .. artSubst .. "]], "
								artLinks = artLinks .. artNew
							else
								artLinks = "''This file has incorrectly attributed an artist. Please add the proper attribution or correct spelling errors.''[[Category:Files with errors in artist name]]<br>" .. artLinks
								staffBreak = false
							end
						Init = stringEnd + 1
					else
						artSubst = trim(string.sub(artists, Init,-1))
							if mw.title.makeTitle(0, artSubst).redirectTarget ~= false then
									pagetitle = tostring(mw.title.makeTitle(0, artSubst).redirectTarget)
									artNew = "[[" .. pagetitle .. "]][[Category:Works by " .. pagetitle .. "]]" 
									artLinks = artLinks .. artNew
								elseif mw.title.makeTitle(0, artSubst).exists == true then
									artNew = "[[" .. artSubst .. "]][[Category:Works by " .. artSubst .. "]]"
									artLinks = artLinks .. artNew
								else
									artLinks = "''This file has incorrectly attributed an artist. Please add the proper attribution or correct spelling errors.''[[Category:Files with errors in artist name]]<br>" .. artLinks
							end
						staffBreak = false
					end
			end
			artOutput = "\n!Artists\n|" .. artLinks .. "\n|-"
		else
			if args['type']:lower() == 'artwork' or args['type']:lower() == 'illustration' then
				if artists:lower() == 'unknown' then
					artOutput = "\n!Artists\n|" .. "''The author of this artwork is unknown.''[[Category:Artwork with unknown authorship]]" .. "\n|-"
				elseif string.find(artists, ':', 0) == 7 then
					artOutput = "\n!Artists\n|" .. string.sub(artists, 9) .. "\n|-"
				else
					artOutput = "\n!Artists\n|" .. "''This file requires artist attribution. Please add the proper attribution.''[[Category:Files without artist attribution]]" .. "\n|-"
				end
			else
				artOutput = ''
			end
		end	
		
		--This: The current addition to artLinks for this loop. artNew
		--artLinks: The second column of fileinfo; includes links and categories. artLinks
		--artOutput: The final output sent to the return output line. Includes the new line and header cell and encapsulates artLinks. artOutput
	
	if media ~= '' and media ~= 'none' then
		local getLink = require('Module:Data/Media')
			if mw.title.makeTitle('Module', 'Data/Media' .. '/raw').exists == true then
				getLinkRaw = require('Module:Data/Media' .. '/raw')
			end
	
		local link = getLink.media[media]
		if getLinkRaw and getLinkRaw.media[media] then
			link = "\n!Origin\n|''[[" .. getLink.media[media] .. "|" .. getLinkRaw.media[media] .. "]]''" .. "\n|-"
		else
			if link:sub(-1) == ')' then
				link = "\n!Origin\n|[[" .. getLink.media[media] .. "|''" .. string.sub(link,1,string.find(link, '%(') - 2) .. "'' " .. string.sub(link,string.find(link, '%('),string.find(link, '%)')) .. "]]\n|-"
			else
				link = "\n!Origin\n|''[[" .. link .. "]]''\n|-"
			end
		end
		
		local categorytype = ''
		
		if typemissing == true then
			category = '[[Category:' .. getLink.media[media] .. " Files]]"
		else
			category = '[[Category:' .. getLink.media[media] .. " Files]]"
			categorytype = "[[Category:" .. getLink.media[media] .. filecat[trim(args['type']:lower())].cattext .. "]]"
		end
		
		if suppressCat ~= '' then
			category = ''
		end
		
		if suppressCatType ~= '' then
			categorytype = ''
		end
		
		local output = '{| class="wikitable"' .. summary .. filetype .. source  .. artOutput .. link .. subject .. trademark .. license .. "\n|}" .. category .. categorytype
		return output
	elseif media:lower() == 'none' then
		local output = '{| class="wikitable"' .. summary .. filetype .. source .. artOutput .. subject .. trademark .. license .. "\n|}"
		return output	
	else
		local output = '{| class="wikitable"' .. summary .. filetype .. source .. artOutput .. subject .. trademark .. license .. "\n|}[[Category:Files with no associated media]]"
		return output
		end
	end
return p