Module:Items

local p = {}

function insert(str1, str2, pos) return str1:sub(1,pos)..str2..str1:sub(pos+1) end

function split(str, pattern) local out = {} local i = 1

local split_start, split_end = string.find(str, pattern, i)   while split_start do        out[#out+1] = string.sub(str, i, split_start - 1) i = split_end + 1 split_start, split_end = string.find(str, pattern, i)   end out[#out+1] = string.sub(str, i)   return out end

function p.italicizeGameInTitle(frame) local title = frame.args[1] local openParenthIndex = string.len(title) - (title:reverse):find("%(")   local closeParenthIndex = string.len(title) -  (title:reverse):find("%)")

local newTitle = title newTitle = insert(newTitle, "''", openParenthIndex + 1) newTitle = insert(newTitle, "''", closeParenthIndex + 2)

local root = mw.html.create root:wikitext(newTitle) return newTitle end

function p.outputSortedFurniture (frame) local game = frame.args[2] local data = mw.text.jsonDecode(frame.args[1]) table.sort(data, function(k1, k2) return string.len(k1.name) < string.len(k2.name) end) local furnitureOutput = "" for k, v in ipairs(data) do       furnitureOutput = furnitureOutput .. frame:expandTemplate{ title = "HouseItem", args = { item = v['name'], count = v['count'], img = v['img'], note = v['note'], game = game } } end return furnitureOutput end

function p.outputAvailabilitiesFromList (frame) local data = frame.args[1] local availabilityTable = split( data, "," ) local availability = "" local availabilityList = "" local mainAvailability = "" local availabilityText = "" local availabilityOutput = "" for k, avail in ipairs(availabilityTable) do       if avail:match("%((.-)%)") then availabilityText = avail:match("(.+)%(")           availability = frame:expandTemplate{ title = "Availability", args = { availabilityText, note = avail:match("%((.-)%)") } }        else        	availabilityText = avail            availability = frame:expandTemplate{ title = "Availability", args = { availabilityText } }        end        availabilityList = availabilityList .. availability    end

local root = mw.html.create root:wikitext(availabilityList) return root end

function p.outputVillagerfromList (frame) local data = frame.args[1] local villagerTable = split( data, "," ) local villager = "" local villagerList = "" local mainVillager = "" local villagerOutput = "" local argument = "Villager" for k, villa in ipairs(villagerTable) do       villager = frame:expandTemplate{ title = "Availability", args = { argument, villa } } villagerList = villagerList .. villager end

local root = mw.html.create root:wikitext(villagerList) return root end

return p