Module:Availability

local p = {} data = mw.loadData("Module:Availability/Data")

function setDefault (t, d)	local mt = {__index = function return d end} setmetatable(t, mt) end

-- Imported function from https://www.lua.org/pil/13.4.3.html -- function copyTable(t) local t2 = {} for k,v in pairs(t) do   	t2[k] = v	end return t2 end

local function getArgs(frame) local args = {} for key, value in pairs(frame:getParent.args) do       args[key] = value end for key, value in pairs(frame.args) do       args[key] = value end return args end

function p.main(frame) local args     = getArgs(frame) local args1    = args[1] or '' local args2    = args[2] or '' local args3    = args[3] or '' local args4    = args[4] or '' local text     = args.text or '' local size     = args.size or '' local nb       = args.nb or '' local note     = args.note or '' local noimages = args.noimages or '' return p.outputAvailability (args1, args2, args3, args4, note, text, size, nb, noimages) end

function p.outputAvailability (args1, args2, args3, args4, note, text, size, nb, noimages) local function isEmpty(s) return s == nil or s == '' end

game = copyTable(data.game) local print = ' ' if not isEmpty(args1) then -- Availability with a specific villager -- if (args1 == "Villager") then setDefault(game," NH Villager Icon.png") if isEmpty(noimages) then if (args2 == "Lulu (villager)" or args2 == "Lulu (islander)") then print = print .. ''			   	end end else -- Main availability function -- if not isEmpty(data.availability[args1]) and not isEmpty(data.availability[args1][1]) and isEmpty(noimages) then print = print .. ' '				end if not isEmpty(data.availability[args1]) and not isEmpty(data.availability[args1][3]) then print = print ..  .. data.availability[args1][3]			   	if (data.availability[args1][3] == data.availability[args1][4]) then			    		print = print ..  else if not isEmpty(text) then print = print .. '|' .. text .. ']]'				   	else print = print .. '|' .. data.availability[args1][4] .. ']]'			   		end end else if not isEmpty(data.availability[args1]) and not isEmpty(data.availability[args1][5]) then if not isEmpty(text) then print = print .. text else print = print .. data.availability[args1][5] end else if not isEmpty(text) then print = print .. text else print = print .. args1 end end end end end -- Note function -- if not isEmpty(note) then print = print .. ' (' .. note .. ') ' end print = print .. ' '		-- Line break function -- if not isEmpty(nb) then print = print .. ''		else print = print .. ' '		end end return print end return p